美文网首页
service使用

service使用

作者: NullPoint3Exce | 来源:发表于2019-05-21 15:17 被阅读0次

概念

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

两种形式

[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>

什么时候使用服务

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

相关文章

网友评论

      本文标题:service使用

      本文链接:https://www.haomeiwen.com/subject/jvdjzqtx.html