Android中Service(服务)的使用

进程的优先级
---------------------------------
进程的优先级表现为:优先级越高,该进程的“生命力”就越强,反之,则越低,而低优先级的进程更容易被Android系统清除。
进程的优先级从高到低为:
1. 前台进程
2. 可见进程
3. 服务进程
4. 后台进程
5. 空进程


Service(服务)
---------------------------------
Service是Android系统的核心组件,由Android创建、维护和管理。
Service需要在AndroidManifest.xml文件中注册。
开发者所开发的所有Service都需要继承自android.app.Service类。
Service是没有界面的,适用于在后台(表示看不见)执行耗时任务。
尽管Service适合用于执行耗时任务,但是,Service仍然是运行在主线程的,所以,当执行任务时,应该开启子线程来完成。
Service是单例的。


开发Service的步骤
---------------------------------
1. 自定义类继承android.app.Service,由于Service是抽象的,所以,实现继承关系后,自定义的类需要重写抽象方法onBind(),目前,无视该方法,仅保证该方法存在即可
2. 打开AndroidManifest.xml文件,在<application>节点之下,添加<service>节点(与<activity>节点同级,且不区分先后顺序),并且至少配置<service>节点的android:name属性,该属性的值为自定义的Service类的完整名称,即包名+类名,例如cn.tedu.app.SampleService


启动Service
---------------------------------
在任何ContextWrapper的子类(例如Activity)中,调用startService(Intent intent)方法,即可激活Service组件


关闭Service
---------------------------------
方法1:在任何ContextWrapper的子类中,调用stopService(Intent intent)方法,即可关闭/停止Service
方法2:在Service内部,调用stopSelf()方法关闭自身


Service的生命周期
---------------------------------
onCreate():当Service组件被创建(第1次激活)时调用,反复激活同一个Service组件并不会重复调用该方法
onStartCommand():当Service组件被激活时调用,每次激活都会调用该方法,在第1次激活时,该方法将在onCreate()之后执行
onDestroy():当Service组件被销毁时调用


Service的粘性
---------------------------------
Service的粘性表现为:当Service被意外销毁时,会自动重新启动Service
Service的粘性是通过onStartCommand()方法的返回值确定的,该返回值的取值可以有:
a) START_STICKY:粘性的
b) START_NOT_STICKY:非粘性的
c) START_STICKY_COMPATIBILITY:兼容模式下的粘性的
d) START_REDELIVER_INTENT:粘性的,且在自动重新启动Service时会携带原来激活Service的Intent对象

posted @ 2016-03-05 17:41  fighting9527  阅读(1646)  评论(0编辑  收藏  举报