标签:集成 用户 它的 事件 重写 intent nbsp 音乐播放器 port
Android赋予Service比处于非活动状态的Activity更高的优先级,当系统请求资源时她们被终止的可能性更小。如果在运行时过早地终止了一个已经启动的Service,只要有足够的资源可用,则运行时会重新启动它。为了应对一些终止Service会显著影响用户体验的极端情况(如音乐播放器),必要时Service的优先级可以升级到和前台的Activity一样高。
虽然Service没有专门的GUI,但它们还是运行在应用程序的主线程中。
一、创建和控制Service
1. Service创建
2. 执行Service并控制它的重新启动
重写onStartCommand事件处理程序以执行一个由Service封装的任务。在这个处理程序中可以指定Service的重新启动行为。当一个Service通过onStartService启动时就会调用onStartCommand方法,该方法在Service的生命周期内会执行多次。
public int onStartCommand (Intent intent, int flags, int startId) {
......
return Service.START_STICKY;
}
返回值控制当Service被运行时终止后系统如何响应Service的重新启动。
3.启动和停止Service
启动Service:通过Intent显示或隐示启动 startService(intent)
停止Service:stopService(intent)
自终止Service:Service完成操作或处理后调用stopSelf来终止它。可以不传递参数也可以传递一个startId值保证已经为目前调用的每个startService实例完成了处理。
4.将Service绑定到Activity
Service和Activity绑定后Activity会维护对Service实例的引用,对Service进行方法调用。
Service支持绑定需要实现onBind方法并且返回绑定Service的当前实例。
要将Service和其他组件进行绑定,需要实现一个新的ServiceConnection。建立连接之后可以通过重写onServiceConnected和onServiceDisconnected得到对Service实例的引用。
要执行绑定需要在Activity中调用bindServide并传递给他一个要绑定的Service的Intet以及一个ServiceConnection实例。
Service和应用程序绑定时的标志位
5.创建前台Service
通过Service的startForeground方法可以设置Service在前台运行,但是由于其会与用户交互,所以需要指定一个持续工作的Notification,只要Service在前台运行,这个通知就会显示。当Service不再需要前台运行的优先级时可以通过stopForeground将其移到后台。
标签:集成 用户 它的 事件 重写 intent nbsp 音乐播放器 port
原文地址:http://www.cnblogs.com/yafangwei/p/6420644.html