Android服务启动方式有两种,通过start启动和bind启动
1.start启动
- 创建一个继承自service的类;
- 在manifest.xml中配置service;
- 使用Context的startService(Intent)启动该service;
- 使用stopService(Intent)停止服务。
使用该方式启动的生命周期
onCreate——onStartCommand(onStart已暂停使用)——onStopService——onDestory
如果服务已经开启就不再会调用onCreate方法,只调用onStart和onStartCommand,服务停止的时候调用onDestory,只会调用一次
说明:服务一旦开启就跟开启者没有任何关系了,无论开启者是退出还是挂掉服务都会在后台继续执行开启者不能调用服务里面的方法
2.bind启动
- 创建一个继承自service的类;
- 在mainfest.xml中配置service;
- 使用Context的bindservice(Intent, ServiceConnection)启动该服务;
- 通过onBindService(ServiceConnection)停止该服务;
使用该方式启动的生命周期
onCreate——onBind——onUnbind——onDestory
服务绑定不会调用onstart()onStartCommand()的
说明:bind开启服务,绑定服务,调用者挂掉服务也会跟着挂掉,绑定者可以调用服务里面的方法
绑定本地服务调用方法的步骤
1.在服务内部创建一个内部类,提供一个方法,可以间接调用服务里的方法;
2.实现onbind方法,返回的就是这个内部类
3.在activity绑定该服务,bindService()
4.在服务成功绑定的方法onServiceConnectied会传递过去一个IBinder对象
5.强制类型转化为自定义的接口类型,调用接口里的方法。