阅读《Android 从入门到精通》(35)——后台服务

来源:互联网 发布:95式自动步枪弹道数据 编辑:程序博客网 时间:2024/05/17 01:28

服务

分为本地服务(程序内部的耗时操作,比如:下载线程),远程服务(内部应用程序相互调用),类似于 Linux 中的守护进程
java.lang.Object;
android.content.Context;
android.content.ContextWrapper;
android.app.Service;

Service 特点

(1)没有用户界面,不直接与用户进行交互;
(2)长期运行,不占用程序控制权;
<1>START_STICKY:该模式下,Service 可被显示启动和停止;
<2>START_NOT_STICKY 或 START_REDELIVER_INTENT:该模式下,只在有命令需要处理时才运行。
(3)比 Activity 优先级高,不轻易被系统终止,即使被系统终止,在系统资源恢复后,也将自动恢复运行状态;
<1>多次重复调用 Context.startService 方法不会引起嵌套,只会成功启动一次;
<2>终止时,调用 Context.stopService 方法会强制终止当前服务,而 stopSelf 方法必须等 Intent 处理结束才终止服务;
(4)用于进程间通信,解决两个不同 Android 应用程序进程之间的调用和通信问题。

创建方法与启动方式

自定义一个类,继承 Service,重写里面的 onCreate、onStart、onDestroy 方法。
启动时,可以选择:启动方式的 startService 启动,也可以选择 Context.bindService 的捆绑式启动,捆绑式启动需要通过 Context.unbindService 终止。

生命周期


特别说明

服务非常恐怖,Activity 挂了服务也照开不误,请参示例:http://download.csdn.net/detail/sweetloveft/9482874
该示例,通过点击 Start 按钮播放音乐,点击 Stop 按钮服务停止音乐播放,并且退出 Activity,间隔 5s 分别点击两次 Start 后,会有两个线程(服务)播放音乐,出现混音;此时点击 Stop 后,会停止一个服务并关闭 Activity

0 0