service使用

概念

是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行

两种形式

[startService()] 启动服务:服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响。 可以通过自身调用stopSelf()方法和外部调用stopserice()来停止服务。
[[bindService()] 绑定服务:服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。unbindservice ()方法停止服务对象。

生命周期

image.png

onCreate 创建服务对象,如果服务已经运行,再次启动,不会调用。
onDestrory 销毁服务对象。

  • startservice
    onstartCommand():开始执行服务

[onStartCommand()] 方法必须返回整型数。整型数是一个值,用于描述系统应该如何在服务终止的情况下继续运行服务 的默认实现将为您处理这种情况,不过您可以对其进行修改)。从[onStartCommand()] 返回的值必须是以下常量之一:
[START_NOT_STICKY]
如果系统在 [onStartCommand()]返回后终止服务,则除非有挂起 Intent 要传递,否则系统不会重建服务。
[START_STICKY]
如果系统在 [onStartCommand()] 返回后终止服务,则会重建服务并调用 [onStartCommand()]但不会重新传递最后一个 Intent。
[START_REDELIVER_INTENT]
如果系统在 [onStartCommand()] 返回后终止服务,则会重建服务,并通过传递给服务的最后一个 Intent 调用[onStartCommand()] 任何挂起 Intent 均依次传递。这适用于主动执行应该立即恢复的作业(例如下载文件)的服务。

  • bindservice
    onBind():开始绑定对象
    onUnBind():取消绑定对象

使用清单文件声明服务

<manifest ... >
  ...
  <application ... >
      <service android:name=".ExampleService" />
      ...
  </application>
</manifest>

什么时候使用服务

长时间的运行在后台的程序应该使用服务。默认情况下,它会在应用的主线程中运行。因此,如果服务执行的是密集型或阻止性操作,则您仍应在服务内创建新线程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本节代码下载地址:WillFlowService 一、服务是什么? 服务(Service)是一种在后台运行的组件,...
    常思行阅读 2,934评论 0 0
  • 前言:本文所写的是博主的个人见解,如有错误或者不恰当之处,欢迎私信博主,加以改正!原文链接,demo链接 Serv...
    PassersHowe阅读 5,300评论 0 5
  • [文章内容来自Developers] Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。...
    岳小川阅读 4,361评论 0 7
  • 《失控的正向思考》,(美)芭芭拉·艾伦瑞克著,高紫文译,台湾左岸文化事业有限公司2012年10月版,新台币320 ...
    ffd13483dc11阅读 1,837评论 0 1
  • 1,感恩,今天中午吃到了先生炒的很好吃的青菜。 2,感恩,今天看了一部很好的电影,遗愿清单。 3,感恩,今天自己在...
    周媖阅读 594评论 0 0

友情链接更多精彩内容