- 浏览: 19614 次
- 性别:
- 来自: 北京
最新评论
Android Service 生命周期可以促使移动设备的创新,让用户体验到最优越的移动服务,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态。
如果没有程序停止它或者它自己停止,service 将一直运行。在这种模式下,service 开始于调用Context.startService () ,停止于Context.stopService (). service 可以通过调用Android Service 生命周期 () 或 Service .stopSelfResult()停止自己。不管调用多少次startService () ,只需要调用一次 stopService () 就可以停止service 。
可以通过接口被外部程序调用。外部程序建立到service 的连接,通过连接来操作service 。建立连接调开始于Context.bindService (), 结束于Context.unbindService (). 多个客户端可以绑定到同一个service ,如果service 没有启动, bindService () 可以选择启动它。
这2种模式不是完全分离的。你可以可以绑定到一个通过startService ()启动的服务。如一个intent想要播放音乐,通过startService () 方法启动后台播放音乐的service 。然后,也许用户想要操作播放器或者获取当前正在播放的乐曲的信息,一个activity就会通过bindService ()建立一个到此service 的连接. 这种情况下 stopService () 在全部的连接关闭后才会真正停止service 。
像activity一样, service 也有可以通过监视状态实现的生命周期 。但是比activity要少――只有3个――而且是public的而不是protected的
- void onCreate()
- void onStart(Intent intent)
- void onDestroy()
通过实现这3个方法,可以监视service 生命周期 的2个嵌套循环:
整个生命周期 从onCreate() 开始,从onDestroy() 结束,像activity一样, a Android Service 生命周期 在 onCreate()中执行初始化操作,在 onDestroy()中释放所有用到的资源。如:后台播放音乐的service 可能在 onCreate()创建一个播放音乐的线程,在onDestroy()中销毁这个线程。
活动生命周期 开始于 onStart(). 这个方法处理传入到startService ()方法的intent。 音乐服务会打开intent查看要播放哪首歌曲,并开始播放。当服务停止的时候,没有方法检测到――没有 onStop() 方法,onCreate() 和 onDestroy() 用于所有通过Context.startService () or Context.bindService () 启动的service 。onStart() 只用于通过startService ()开始的service 。
如果一个Android Service 生命周期 是可以从外部绑定的,它就可以触发以下的方法:
- IBinder onBind(Intent intent)
- boolean onUnbind(Intent intent)
- void onRebind(Intent intent)
onBind() 回调被传递给调用bindService 的intent, onUnbind() 被unbindService ()中的intent处理。如果服务允许被绑定。那么onBind() 方法返回客户端和sercie的沟通通道。如果一个新的客户端连接到服务,onUnbind() 会触发onRebind() 调用。
下面的图表说明了sercice的回调方法。下面的图片将通过 startService 和通过bindService ()启动的service 分开了,但是要注意不管他们怎么启动的,都有可能被客户端连接,因此都有可能触发到onBind() 和 onUnbind() 方法。
当经过receiver 请求,broadcast message到达的时候, Android 调用持有message的intent的 onReceive() 方法,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态
一个含有激活的broadcast receiver的进程是不会被中止的。但是只含有非激活组件的进程在它占用的内存被其他程序请求的时候,任何时间都可以被中止。 当响应broadcast message的程序因为消耗很多时间而在另外一个线程 而非UI所在的线程处理的时候会出现一个问题。
当 onReceive() 开启一个线程并返回后,整个程序(包括新建的线程)状态是非激活的(除非此进程中有其他激活的组件), 因此这个进程就有被中止的危险。解决这个问题的办法是onReceive() 方法启动一个Android Service 生命周期 ,让sercie去做耗时的工作,这样系统就知道此进程中还有活动的工作。
发表评论
-
服务--Service
2010-09-26 16:07 743Android中的服务和windows ... -
广播接收者(BroadcastReceiver)
2010-09-26 16:05 931广播接收者(BroadcastReceiver) 用于异步接收 ... -
如何安装 Android SDK 和Eclipse 插件
2010-09-21 23:50 2015所需开发环境: JDK 5 或 JDK 6 (仅有JR ... -
Android平台——Binder机制
2010-09-19 12:44 1317由代码来补充部分: in ... -
Timer和TimerTask详解
2010-09-19 11:09 9121.概览 Timer是一种定时器工具,用来在一个后台线程 ... -
TelephonyManager常用方法
2010-09-19 09:51 1861通过TelephonyManager可以取得手机电信网络的信息 ... -
getSystemService
2010-09-19 09:39 1240getSystemService是Android很 ... -
反编译Android apk文件
2010-09-17 16:02 941找到Android软件安装包中的class.dex: ... -
Grid View
2010-09-17 15:46 1265网格布局:是一个ViewGro ... -
SharedPreferences
2010-09-17 15:04 955SharedPreferences 是以键值对来存储应用程序 ... -
Only the original thread that created a view hierarchy can touch its views<已解决>
2010-09-16 17:32 1941子线程不可以 更新UI主线程 new Thread() { ...
相关推荐
AndroidService生命周期及用法[收集].pdf
非常简单明了的 android java 层的 service分析。
Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那...Service生命周期 : Android
应用程序组件有一个生命周期——一开始Android实例化他们响应意图,直到结束实例被销毁。在这期间,他们有时候处于激活状态,有时候处于非激活状 态;对于活动,对用户有时候可见,有时候不可见。组件生命周期将讨论...
android Service的生命周期 bind以及startService两种方式 对应的生命周期
Android说明Service生命周期的代码例子。用于演示Service组件从创建到销毁的完整生命周期,以及IntentService的使用例子。
Activity和Service生命周期及使用AIDL通信
startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...
项目视频介绍#标题视频地址1服务的生命周期视频12服务的生命周期视频23Android Service全面认识三
android项目教程Service生命周期.pptx
一个小demo,通过求平均值,测试service的生命周期以及启动方式!
Android中Service生命周期演示案例的任务要求.pdf 学习资料 复习资料 教学资源
Android中演示Service生命周期的代码清单.pdf 学习资料 复习资料 教学资源
android 生命周期,service演示, 透明背景设置,android界面切换演示
Android Service 生命周期可以促使移动设备的创新,让用户体验到最优越的移动服务,只有broadcast receivers执行此方法的时候才是激活的,当 onReceive()返回的时候,它就是非激活状态。 如果没有程序停止它或者它...
Android中Service的生命周期解析.pdf 学习资料 复习资料 教学资源
Android Service类与生命周期 Service是Android四大组件与Activity最相似的组件,都代表可执行的程序,区别在于Service一直在后台运行且没有用户界面。 1.Service的类图和生命周期 先来看看Service的类图: 接...
startService启动方式,只在activity中启动和销毁,和activity关系不大,即使antivity退出,服务任然运行,比如后台放音乐,对应生命周期: bindService启动方式,和activity绑定后,和activity共存亡,activity...