【发布时间】:2016-03-19 12:02:50
【问题描述】:
Service 是否独立于 Activity 生命周期?即使在活动被杀死后它会继续运行吗?
【问题讨论】:
-
Downvote:这在 Android 开发者指南中有很好的描述,首先在谷歌上点击。
标签: android android-activity android-service
Service 是否独立于 Activity 生命周期?即使在活动被杀死后它会继续运行吗?
【问题讨论】:
标签: android android-activity android-service
服务是否独立于活动生命周期?
是的。
另一个应用程序组件可以启动一个服务,即使用户切换到另一个应用程序,它也会继续在后台运行。此外,组件可以绑定到服务以与其交互,甚至执行进程间通信 (IPC)。
酱:http://developer.android.com/guide/components/services.html
即使在活动被杀死后,服务还会继续运行吗?
视情况而定。
如果它是一个绑定服务,并且你在活动的onPause、onStop、onDestroy 中取消绑定,并且该服务不是从另一个地方绑定或由context.startService 启动的,它就会死掉。 Read more about bound services.
如果任务被终止(例如,在任务管理器中被刷掉),如果在其清单条目中指定了android:stopWithTask="true",则服务将被终止。如果设置了android:stopWithTask="false",服务将通过onTaskRemoved(Intent) 接收回调,其中Intent 是用于启动已删除任务的根活动的意图。 Read more about onTaskRemoved(Intent).
如果您的服务在与您的活动不同的进程中运行并且活动崩溃,则服务将继续运行(如果未绑定,则再次运行)。
除此之外,服务将一直持续到完成为止。
【讨论】:
如果应用程序没有被杀死,当活动被杀死时服务将继续工作。您可以从活动启动服务或将活动绑定到服务,但它们是独立的。
Android 系统仅在内存不足时才会强制停止服务,并且必须为具有用户焦点的 Activity 恢复系统资源。如果服务绑定到具有用户焦点的活动,则它不太可能被杀死,如果服务被声明在前台运行(稍后讨论),那么它几乎永远不会被杀死。
【讨论】: