Android 操作系统从未停止让我感到惊讶。我希望我知道在您的应用程序在后台时,他们决定是否杀死您的线程的规则是什么。这是非常令人困惑的,起初我确信他们在特殊的服务线程上运行服务代码,并且当应用程序进入后台时,从服务线程创建的任何线程都不会被消除,但是当我登录 Thread.currentThread() 时,我看到活动的代码和服务的代码都运行在同一个主线程上, 如前所述,服务可以在后台运行,而活动不能。
这整个事情是如何运作的? 他们如何决定杀死哪个线程,不杀死哪个线程? 他们如何决定对象是否正在使用中或可以释放其内存? 起初,我希望它像在标准 Java 环境中一样工作,但他们以一种不清楚且没有太多文档记录的方式改变了一切......
这里的任何人都可以给我一个关于这个问题的好文章的参考,甚至更好的可以向我解释这一点?
对于初学者来说,在处理服务时,您可能应该阅读服务文档。那里的相关行是:
请注意,与其他应用程序对象一样,服务在其托管进程的主线程中运行。
实际上,所有这些都有据可查。Android 操作系统不会杀死特定的线程,只会杀死整个进程。您可以在同一文档的"流程生命周期"部分中阅读更多内容。