简要介绍
Service是安卓的四大组件之一,常用来在后台执行一些耗时长的任务. 但是因为Service是运行在主线程的,如果要执行耗时任务则需要创建线程.而IntentService则是包含了内置线程的,用于简化任务的执行.IntentService的启动也分为startService和bindService两种方式,但是因为bindService方式跟Service无差别,所以一般不会对IntentService采用bindService方式.关于Service可以参考《安卓Service基本使用方法》
Service生命周期
使用方法
- manifest文件中增加service定义
<service android:name=".SampleIntentService" />
- 增加服务类SampleIntentService
class SampleIntentService : IntentService("worker_thread") {
private val tag = SampleIntentService::class.java.simpleName
override fun onHandleIntent(intent: Intent?) {
log(tag, "onHandleIntent")
doSomething()
}
private fun doSomething() {
log(tag, "doSomething")
Thread.sleep(2000)
}
override fun onCreate() {
log(tag, "onCreate")
super.onCreate()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
log(tag, "onStartCommand")
return super.onStartCommand(intent, flags, startId)
}
override fun onDestroy() {
log(tag, "onDestroy")
super.onDestroy()
}
}
- activity调用
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startService(Intent(this, SampleIntentService::class.java))
}
}
Demo源代码
https://github.com/cxyzy1/intentServiceDemo
安卓开发技术分享: https://www.jianshu.com/p/442339952f26
点击关注专辑,查看最新技术分享
更多技术总结好文,请关注:「程序园中猿」
网友评论