Service
1.Xmind
2.创建服务
流程
使用startService启动Service
protected void onCreate(Bundle savedInstanceState){ super.onCreate(saveInstanceState); Intent service = new Intent(); service.setClass(this, MyService.class); startService(service); }
使用bindService绑定Service
protected void onCreate(Bundle savedInstanceState){ super.onCreate(saveInstanceState); Intent service = new Intent(); service.setClass(this, MyService.class); bindService(intent, new MyConnection(), BIND_AUTO_CREATE); }
MyConnection为实现了ServiceConnection接口的类,内部覆写了onServiceConnected方法,当Service被绑定的时候回调该函数。
以上两步均需要在清单文件中注册
<service android:name = "service.test.MyService"/>
3.关于进程
服务使用的是进程而不是线程
假设服务为线程,一个应用程序启动了,该应用程序的进程也启动了,而服务线程也运行在该进程中,但当当前应用关闭时,进程被置为空进程,而内存正好不够用,此时的服务也将随着这个空进程被回收。所以服务需要单独开放一个进程进行运行,保证其生命周期。
4.生命周期
生命周期图
整体生命周期
service在onCreate时被调用开启,到onDestroy时被摧毁,这和Activity类似,一个进行初始化,一个释放资源。active lifetime
- 在onStartCommand或是onBind被调用时,service进入积极活动的生命时间(active lifetime)
- 两种不同的生命周期路径也将各自处理由startService或是bindService方法传过来的Intent对象。
- 如果service是被开启的,那么它的活动生命周期和整个生命周期一起结束。
- 如果service是被绑定的,他们的活动生命周期是在onUnbind方法结束后结束。
一个被开启的service是通过调用stopSelf或是stopService来停止的,除非这个service和客户组件绑定,否则系统将会直接销毁他。
四大组件部分做个简单介绍吧,不多写了。
未完待续。。。。