1、什么是Service?
- Service 是一种可以在后台长时间执行操作而没有用户界面的应用程序组件。
注意:自定义的Service 需要在AndroidManifest.xml中申明,声明方式为:<service ****** />
例如:
2、启动Service的两种方式、生命周期、被启动又被绑定的服务生命周期
- 通过startServie() :执行onCreate() -> onStartCommand() 然后处于运行状态,调用stopService() 或者 stopSelf() 停止服务,执行onDestroy();注意:调用者直接退出而没有调用 停止服务的方法,Service会一直在后台运行。
通过startService()开启LocalService后打印的日志如下:
通过调用stopService() 关闭LocalService 后打印的日志如下:
- 通过bindService() :onCreate() -> onBind() 这个时候调用者 跟 service绑定在一起。 当绑定 Activity 的Context 不存在了(Activity被finish()),或者 断开连接 Context.unBindService() , onUnbind() -> onDestroy() 方法。
通过bindService() 绑定服务打印日志如下:
通过unBindService() 解绑服务打印日志如下:
- 注意被启动 又被绑定 的服务的生命周期:如果一个服务又被绑定 又被启动, onCreate() 方法只会执行一次, startService() 调用多次,onStartCommand()也会被调用多次,且只有调用 Service的 stopService 或者 stopSelf()来停止服务,当服务被停止时(1、调用stopService ;2、调用stopSelf();3、不在有绑定的连接(没有被启动) ),在这里你应当做一份清除工作,如停止在Service中创建并运行线程。
通过startService()开启服务,然后在对服务进行绑定,打印日志如下:
通过unBindService()进行服务解绑
未完,待更新.....
当前Demo 的GitHub地址:https://github.com/YMAndroid/AndroidDemoProject