1.service简介
service 服务,相当于没有界面的activity,运行在主线程当中,后台服务;
2.service 的开启
startservice 和stopservice 开启和关闭服务。 开启服务后会长期运行在程序的后台,不调用关闭服务,及时程序退出,服务依然会运行。
3.service 与 activity 的通信
bindService 和 unbindService 绑定与解绑服务,让activity 与service 进行绑定,相当于拜把子。 绑定之后就可以通信了
(1)在service 创建类继承自binder ,之后再重写onbind 方法 并返回 bingder实例
(2)在绑定的activity 中建立ServiceConnection 类,并重写回调方法,在onServiceDisconnected 中可以获取ibinder实例,强转之后就可以通信了
4.service的生命周期
startService 周期 :oncreate ,onstartcommend
stopService 周期 : ondestory
bindService 周期 :oncreate onBind
unbindService 周期 :onUnbind ondestroy
5.service的销毁
如果调用了startservice 又调用了bindservice , 则需要unbindservice 和 stopservice 都调用才能 销毁service。
绑定的service ,如果activity 销毁了, 则service也会被销毁, unbind,ondestory。
6.前台Service
当系统内存不足时,有可能会回收后台服务,后台回收级别高。前台Service和普通Service最大的区别就在于,它会一直有一个正在运行的图标在系统的状态栏显示。
7.intentService
创建类继承自IntentService ,重写onhandleIntent 方法,这个方法的执行在子线程中。并且执行完毕后会自动关闭。 主要解决 service执行耗时操作造成的anr,及执行完毕后忘记关闭service的特点。(那为什么不开启子线程执行? 我觉得子线程的回收优先级高)