Service
service是实现Android程序在后台运行的解决方案,处于主线程中,不能进行耗时的操作,可以开启线程执行耗时操作,适合于无需用户干预,且规则或长期运行的后台功能,有利于降低系统资源的消耗,优先级比Activity高,即使被终止,在系统资源恢复后会自己恢复运行状态,还可以用于IPC的通讯,解决不同Android应用程序之间的调用和通讯问题。
分类
按运行地点:本地服务和远程服务
按运行类型:前台服务和后台服务
按功能:可通讯服务和不可通讯服务
4个手动调用方法
startService():开启服务
stopService():关闭服务
bindService():绑定服务
unbindService():解绑服务
内部调用方法
onCreate():创建服务
onStartCommand():开始服务
onDestroy():销毁服务
onBind():绑定服务
onUnbind():解绑服务
绑定服务步骤:
- 创建Service,在service中创建内部类继承自Binder,然后在service中实例化该内部类
在onBind中返回内部类对象。 - 注册service
- 在Activity中,创建ServiceConnection,在ServiceConnection的onServiceConnected()方法中得到service,在onServiceDisconnected将service置null注册service
- 在Activity中,创建ServiceConnection,在ServiceConnection的onServiceConnected()方法中得到service,在onServiceDisconnected将service置null
- 使用bindService(Service service,Context context ,ServiceConnection connection)绑定服务
IntentService
处理异步请求,实现多线程
工作流程
调用startService()请求IntentService,IntentService中onCreate方法通过HandlerThread单独开启一个线程依次处理Intent中请求对象所对应的任务,执行完所有Intent请求对象对应的工作后,若有新的Intent到达,继续执行下一个Intent请求,若无,IntentService自动停止,最后结束。
步骤
1.创建IntentService,复写onHandler()方法
2.注册IntentService
3.在Activity中使用,开启服务
AlarmManager
功能:实现一个后台定时任务