【问题标题】:Is a service independent of the activity life cycle?服务是否独立于活动生命周期?
【发布时间】:2016-03-19 12:02:50
【问题描述】:

Service 是否独立于 Activity 生命周期?即使在活动被杀死后它会继续运行吗?

【问题讨论】:

  • Downvote:这在 Android 开发者指南中有很好的描述,首先在谷歌上点击。

标签: android android-activity android-service


【解决方案1】:

服务是否独立于活动生命周期?

是的。

另一个应用程序组件可以启动一个服务,即使用户切换到另一个应用程序,它也会继续在后台运行。此外,组件可以绑定到服务以与其交互,甚至执行进程间通信 (IPC)。

酱:http://developer.android.com/guide/components/services.html

即使在活动被杀死后,服务还会继续运行吗?

视情况而定。

如果它是一个绑定服务,并且你在活动的onPauseonStoponDestroy 中取消绑定,并且该服务不是从另一个地方绑定或由context.startService 启动的,它就会死掉。 Read more about bound services.

如果任务被终止(例如,在任务管理器中被刷掉),如果在其清单条目中指定了android:stopWithTask="true",则服务将被终止。如果设置了android:stopWithTask="false",服务将通过onTaskRemoved(Intent) 接收回调,其中Intent 是用于启动已删除任务的根活动的意图。 Read more about onTaskRemoved(Intent).

如果您的服务在与您的活动不同的进程中运行并且活动崩溃,则服务将继续运行(如果未绑定,则再次运行)。

除此之外,服务将一直持续到完成为止。

【讨论】:

    【解决方案2】:

    如果应用程序没有被杀死,当活动被杀死时服务将继续工作。您可以从活动启动服务或将活动绑定到服务,但它们是独立的。

    Android 系统仅在内存不足时才会强制停止服务,并且必须为具有用户焦点的 Activity 恢复系统资源。如果服务绑定到具有用户焦点的活动,则它不太可能被杀死,如果服务被声明在前台运行(稍后讨论),那么它几乎永远不会被杀死。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 1970-01-01
      • 2013-01-13
      相关资源
      最近更新 更多