网站大量收购独家精品文档,联系QQ:2885784924

android分析和总结分析和总结.docx

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
什么是 Service : Service,看名字就知道跟正常理解的“服务”差不多,后台运行,可交互这样的一个东西。它跟 Activity 的级别差不多,但是他不能自己运行,需要通过某一个 Activity 或者其他Context 对象来调用, Context.startService() 和 Context.bindService()。 两种启动 Service 的方式有所不同 : 如果在 Service 的 onCreate 或者 onStart 做一些很耗时间的事情,最好在 Service 里启动一个线程来完成,因为 Service 是跑在主线程中,会影响到 UI 操作或者阻塞主线程中的其他事情。 什么时候需要 Service : 比如播放多媒体的时候用户启动了其他 Activity 这个时候程序要在后台继续播放,比如检测 SD 卡上文件的变化,再或者在后台记 录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。如何使用 Service : Service 的调用 Context.startService():Service 会经历 onCreate - onStart(如果 Service 还没有运行, 则 android 先调用 onCreate()然后调用 onStart();如果 Service 已经运行,则只调用onStart(), 所以一个 Service 的 onStart 方法可能会重复调用多次 );stopService 的时候直接 onDestroy,如果是调用者自己直接退出而没有调用 stopService 的话,Service 会一直在后台运行。该Service 的调用者再 启动起来 后可以通 过 stopService 关闭 Service。 注意, 多次调用Context.startservice() 不会嵌套(即使会有相应的 onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用 Context.stopService()或者 stopSelf(),他都会被停止。补充说明: 传递给 startService()的Intent 对象会传递给 onStart()方法。调用顺序为:onCreate -- onStart(可多次调用) -- onDestroy。 Context.bindService():Service 会经历 onCreate() - onBind(),onBind 将返回给客户端一个 IBind 接口实例,IBind 允许客户端回调服务的方法,比如得到 Service 运行的状态或其他操作。这个时候把调用者(Context,例如 Activity)会和 Service 绑定在一起,Context 退出了,Srevice 就会调用 onUnbind - onDestroyed 相应退出,所谓绑定在一起就共存亡了 。 补充说明:传递给 bindService()的 Intent 对象会传递给 onBind(),传递给 unbindService()的 Intent 对象会传递给 onUnbind()方法。 调用顺序为:onCreate -- onBind(只一次,不可多次绑定) -- onUnbind -- onDestory 。 注意事项:在 Service 每一次的开启关闭过程中,只有 onStart 可被多次调用 ( 通过多次startService 调用),其他 onCreate,onBind,onUnbind,onDestory 在一个生命周期中只能被调用一次。还有一点,目前我没有遇到过需要 startService 和 bindService 交互使用的情况(我 认为不会有这种需求),所以不必去考虑交互的问题,待遇到时再考虑不迟。 adcastReceiver 只能通过 startService 启动 Service ,因为广播本身生命周期很短,bind 的话没有意义 Service 的生命周期 : Service 的生命周期方法比 Activity 少一些,只有 onCreate, onStart, onDestroy 我们有两种方式启动一个 Service,他们对 Service 生命周期的影响是不一样的。 通过 startService Service 会经历 onCreate - onStart stopService 的时候直接 onDestroy 如果是调用者(TestServiceHolder)自己直接退出而没有调用 stopService 的话,Service 会一直在后台运行。 下次 TestServiceHolder 再起来可以 stopService。 通过 bindService Service 只会运行 onCreate

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档