Anroid四大组件service之本地服务的示例代码

Anroid四大组件service之本地服务的示例代码,第1张

概述服务是Android四大组件之一,与Activity一样,代表可执行程序。但Service不像Activity有可 *** 作的用户界面,它是一直在后台运行。用通俗易懂点的话来说:

服务是AndroID四大组件之一,与Activity一样,代表可执行程序。但Service不像Activity有可 *** 作的用户界面,它是一直在后台运行。用通俗易懂点的话来说:@H_404_1@

如果某个应用要在运行时向用户呈现可 *** 作的信息就应该选择Activity,如果不是就选择Service。@H_404_1@

Service的生命周期如下:@H_404_1@

Service只会被创建一次,也只会被销毁一次。那么,如何创建本地服务呢?
@H_404_1@

实现代码如下:
@H_404_1@

package temp.com.androIDserivce;import androID.app.Service;import androID.content.Intent;import androID.os.IBinder;import androID.os.SystemClock;import androID.support.annotation.Nullable;import androID.util.Log;/** * Created by administrator on 2017/8/18. */public class Myservice extends Service {  @OverrIDe  public voID onCreate() {    Log.i("test","服务被创建");    super.onCreate();  }  @OverrIDe  public int onStartCommand(Intent intent,int flags,int startID) {    Log.i("test","服务被启动");    new Thread(new myRunnable(startID)).start();    return super.onStartCommand(intent,flags,startID);  }  @OverrIDe  public voID onDestroy() {    Log.i("test","服务被销毁");    super.onDestroy();  }  @Nullable  @OverrIDe  public IBinder onBind(Intent intent) {    return null;  }  class myRunnable implements Runnable {    int startID;    public myRunnable(int startID) {      this.startID = startID;    }    @OverrIDe    public voID run() {      for (int i = 0; i < 10; i++) {        SystemClock.sleep(1000);        Log.i("test",i + "");       }      //停止服务      //stopSelf();      stopSelf(startID);      //当用无参数的停止服务时,将会销毁第一次所启动的服务;      //当用带参数的停止服务时,将会销毁最末次所启动的服务;    }  }}

要声明服务,就必须在manifests中进行配置@H_404_1@

<manifest ... > ... <application ... >   <service androID:name=".Myservice" androID:exported="true"/> ... </application> </manifest>

androID:exported="true" 设置了这个属性就表示别人也可以使用你的服务。
@H_404_1@

还有一个需要注意的小点,在Myservice中可以看见我启动时用了一个子线程去帮我实现工作,那么我为什么没有直接把for循环的那段代码写在onStartCommand方法中呢,是因为写在onStartCommand中将会报ANR程序无响应的错误。就是当你所有的事情都去交给主线程做时,就会造成主线程内存溢出,它就会炸了。这个时候也可以用IntentService来取代Service。@H_404_1@

package temp.com.androIDserivce;import androID.app.IntentService;import androID.content.Intent;import androID.os.SystemClock;import androID.util.Log;/** * Created by administrator on 2017/8/18. */public class MyService2 extends IntentService {  public MyService2() {    super("");  }  public MyService2(String name) {    super(name);  }  @OverrIDe  protected voID onHandleIntent(Intent intent) {    for (int i = 0; i <10 ; i++) {      SystemClock.sleep(1000);      Log.i("test",i+"");    }  }}

使用这个相对而言会比较简单。IntentService是Service的子类。它使用工作线程逐一处理所有启动请求。@H_404_1@

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。@H_404_1@ 总结

以上是内存溢出为你收集整理的Anroid四大组件service之本地服务的示例代码全部内容,希望文章能够帮你解决Anroid四大组件service之本地服务的示例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1144057.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存