在应用程序流程被杀死之后,如何管理跑步意图



只是试图澄清我对IntentService如何由OS管理如何管理终止状态的理解。根据终止,我的意思是根据以下文档销毁当前活动或杀死应用程序过程时:https://developer.android.com/guide/components/activities/activity-lifecycle

给定评论

另外,意图服务不受大多数用户界面生命周期事件的影响,因此它在会关闭异步的情况下继续运行

https://developer.android.com/training/run-background-service/create-service;

我感觉好像:
1)A启动IntentService不受活动生命周期的影响。这是正确的吗?

2)如果(1)是真的,即使达到终止状态后,它也会继续无限期地运行,直到某种程度上它可以停止自身,或者OS决定停止它?

在我的特殊情况下,我在应用程序启动期间使用IntentService查询API,获取内容,然后在Xamarin.Forms导航堆栈中添加新的(着陆)Page(这将等同于启动新活动)。这使我谈到了下一个问题...

3)如果该应用程序到达IntentService创建新活动时,该应用程序已经处于终止状态,会发生什么?当然,该活动一旦终止应用程序就无法添加到导航堆栈中?

  1. 是的,启动IntentService不受活动生命周期的影响。实际上,在有限服务之外的所有服务都不受活动生命周期的影响。

  2. IntentService将继续进行,直到完成其工作的完成,销毁应用程序,或者由于Android 8.0背景服务规则的更改而决定杀死Service

  3. 您对终止状态的使用太宽了...如果应用程序已经终止,那么什么也不会发生,因为IntentService也已经终止了。如果是启动终止IntentServiceActivity,那么什么也不会发生,因为默认情况下,IntentService与活动无关,即使这是启动它的活动。

对于最后一个问题,这实际上取决于您如何选择将IntentService的结果传达给Activity

  • 如果您使用的是BroadcastReceiver,则不会发生任何事情,因为IntentService会不会出现任何问题,但Activity将无法收到结果,因为终止了结果。

  • 但是,如果您简单地创建了一个新的Activity,则可以简单地将startActivity()与添加到意图的结果数据一起使用。不过,我怀疑用户不再在您的应用程序中看到Activity突然在屏幕上打开。启动新的Activity与以前的Activity无关,因为Context的任何实例都可以启动Activity

老实说,根据您的问题,听起来您非常关心IntentService,并且与启动它的Activity有联系。如果是这样,您真的不应该使用IntentService,因为那不是真正的目的。这并不是要与Activity建立联系。这只是为了完成工作和完成。

相反,绑定的Service将是一个更好的选择,因为它与启动它的Activity有直接连接。

最新更新