startService的生命周期以及实现方式
可以通过一个简单的音乐播放器来测试startService的生命周期
- MainActivity中放三个按钮,分别代表播放,暂停,停止
将这三个按钮分别绑定监听器,播放按钮监听器中开启服务并播放歌曲,停止按钮停止服务并停止播放,暂停按钮暂停播放。
- 播放事件中使用startService(Intent intent)方法开启服务,停止事件中会调用服务中stopSelf(int startId)结束服务。
- 自定义MyService,继承自Service,然后分别重写
onCreate(),onStartCommand(),onDestory(),onBind()
方法,然后在方法中进行相关操作,并记录日志。其中onStartCommand()
在服务被调用时会被执行,故在此方法进行操作。 - 最后在AndroidManifest.xml中注册该Service。label标签给该service取个名字便于区分
<service
android:name=".MyService"
android:label="@string/service_test_worktwo">
</service>
开始测试
- 点击播放音乐,观察日志,发现进入了
onCreate()
和onStartCommand()
状态,开始播放音乐,服务被开启,点击多次时,只调用onStartCommand()
方法,onCreate()方法只有第一次会被调用。
- 点击暂停播放,然后再点播放音乐,观察日志,发现只从
onStartCommand()
进入,说明只有第一次打开应用时才走onCreate()