Service

2019-06-04  本文已影响0人  _爱笑的eyes

Service和Thread的区别:

Thread是程序执行的最小单元,他是分配CPU的基本单位。

Thread生命周期:新建 就绪 运行 死亡 阻塞。

Thread的缺点:当Activity被finish关闭之后,不再持有该线程的引用,无法对Thread进行控制。

Thread需要连续不停的每隔一段时间就要连接服务器一次做某种同步。

Service是Android的一种机制,服务是运行在主线程中。

Service的生命周期 onCreate onStart onDestory onBind onUnbind.

Service的生命周期 :

onCreate onStart onDestory onBind onUnbind

1.startService开启一个Service服务,onCreate-onStartCommand,onCreate启动一次,onStartCommand多次。

2.StopService停止Service服务,调用onDestory方法。

3.bindService绑定Service服务,onCreate-onbind

4.unBindService解绑Service服务,onUnbind-onDestory

IntentService

    因为我们不建议在Service中编写耗时的逻辑和操作,否则会引起ANR,为了解决这样的问题,引入了IntentService。

IntentService内部有一个工作线程HandlerThread来处理耗时操作。

IntentService继承Service类,包含Service全部特性,包含Service的生命周期,不同的是,IntentService他在执行onCreate操作时内部开启一个线程执行耗时操作。IntentService内部则是通过消息的方式发送给Handler的,然后由Handler中的Looper来处理消息。

service与Activity的通信?

答:①通过绑定服务的方式,在绑定的服务中声明一个binder类,并且创建binder对象,在Onbind()中返回这个对像,并让Activity实现ServiceConnection接口,在OnServiceConnected方法中获取到Service提供的这个Binder对象,通过这个对象的各种自定义方法就可以完成Service与Activity的通信

②通过Intent的方式,在StartService中需要传入一个Intent对象作为参数,通过这个Intent的实例对象进行实现通信

③通过CallBack 和 Handler的方式,在绑定的服务中声明一个Binder类,并创建一个Binder对象,在OnBind()中返回这个对象,让Activity实现ServiceConnection接口,并且在OnServiceConnected方法中实例化Service中的CAllback接口,并且实现OnDataChange()方法,其中的实质是一段Hander代码,可以在其中完成耗时操作,以这种方式来完成通信

上一篇 下一篇

猜你喜欢

热点阅读