安卓服务Service
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Started
Bound 一个service可以同时 具有这两种类型
警告
service运行在它所在进程的主线程中
如果service做任何耗时操作(如播放MP3或上传、下载数 据等),应该在service中创建一个新线程做这些工作。 通过使用一个单独线程,将降低ANR( Application Not Responding应用不响应 )错误的风险 应用的主线程可以保持专注于用户与activity交互。
Bound
应用组件通过调用bindService()绑定的service,为 “Bound” service。 绑定的service提供一个client/server接口,允许组件与 service交互,发送请求,获取结果,甚至用IPC在进程间通 信。
多个组件可以一次绑定一个service,但当所有这些组件解 除绑定时,这个service就会被销毁。
Declaring a service in the manifest
<manifest ... > ... <application ... > <service android:name=".ExampleService" /> ... </application> </manifest> 不想让其它应用使用某应用中的service,应该怎么办? ①不定义<intent-filter> ②android:exported =“false” (私有的,即便有intent-filter)
实现Service生命周期中的回调方法
The Lifecycle of a Service
任何service,不管它是怎 样启动的,都允许client绑 定至它。
所以,用 onStartCommand()启动 的service(通过一个 client调用startService()) 依然可以接收对onBind() 的调用(当一个client调用 bindService())。
Service
什么是Service
Service是一个应用组件,它可以在后台执行耗时操作,没 有用户界面。
另一个应用组件可以启动service,即使用户切换到其他应 用,该service依旧会在后台继续运行。 一个组件可以绑定service,与它交互,甚至进行进程间通 信(IPC)。 例如,service可以处理网络事务,播放音乐,进行文件I/O 或与content provider交互。
Service的类型
Started
Bound
Started
应用组件通过调用startService()启动的service,为 “started” service。
一旦启动,service就可以在后台运ຫໍສະໝຸດ Baidu,即使启动它的组件 被销毁。
通常,一个“started” service执行单一操作,且不会给调 用者返回结果。 例如,它可能通过网络下载或上传文件。当操作完成,该 service停止自己(stopSelf())。