gpt4 book ai didi

android - android关闭服务后线程是否继续运行?

转载 作者:行者123 更新时间:2023-11-29 01:16:57 25 4
gpt4 key购买 nike

在我的主 Activity 中的 onCreate 上调用了一个服务。服务从服务类(不是 IntentService)扩展——在那个服务中,一个线程被调用,它有一个无限循环——如果线程抛出任何异常,它关闭服务,并召回服务(由 try catch block 处理) .

最终,由于任何原因,该服务被android关闭。

请回答以下问题:

A) 我的线程是否继续运行?

.....如果是这样,如果以后任何时候抛出Exception,是否会召回服务?

....如果不是,是否会抛出Exception导致服务重新启动?

B) android 在关闭我的服务时会关闭我的线程吗?

我只是想了解当 Android 决定清除我的服务时我的应用程序会发生什么。

最佳答案

只要线程在运行,它就被认为是“垃圾收集根”。因此,线程本身以及从该线程可访问的任何其他对象都不会被垃圾回收。如果Android框架不干涉,死循环的线程会一直运行下去。由于您的线程可以“关闭”服务,我假设它具有对该服务的引用(隐式或显式),因此整个服务将保留在内存中。

但是,Android 确实有一些方法可以监控应用程序的内存消耗,并且可以终止应用程序以释放内存。当 Android 杀死一个应用程序时,它会杀死该应用程序的整个进程。当进程被终止时,所有线程都会停止,并且与它们关联的内存会被释放,因此不会发生进一步的 Activity 。

这似乎是您的服务的结束,但 Android 提供了额外的机制来控制在这种情况下发生的事情:您可以将服务指定为 STICKY,Android 将尝试尽快重新启动该服务。在 this answer 中有详细讨论。 .

引用资料:

此答案中提供的大部分信息都包含在 official Services page 中和 javadoc of service class .

对于在另一个进程中运行的更复杂的 Service 场景,几乎没有文档,但是有很多博客。我还写了一篇关于这个主题的帖子:How to establish a reliable (crash and kill tolerant) connection to bound IPC (e.g. AIDL) Service in Android

关于android - android关闭服务后线程是否继续运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38928144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com