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代码,可以在其中完成耗时操作,以这种方式来完成通信
网友评论