Android 活动重新启动,但上一次启动的线程继续运行

Android 活动重新启动,但上一次启动的线程继续运行,android,android-lifecycle,Android,Android Lifecycle,我面临着一件非常奇怪的事情。 在用户使用应用程序的过程中,我创建线程并使用locationManager获取位置更新 现在,当用户离开应用程序,Android触发onDestroy,用户稍后返回应用程序时,我看到旧线程仍在运行,locationManager仍在触发事件。 当然,我可以在onDestroy中停止线程和locationManager(我当然应该这样做),但如何解释Android在决定关闭应用程序后仍保持此功能并运行?在最近的窗口中关闭应用程序之前,应用程序不会完全关闭。因此,您必须

我面临着一件非常奇怪的事情。 在用户使用应用程序的过程中,我创建线程并使用locationManager获取位置更新

现在,当用户离开应用程序,Android触发onDestroy,用户稍后返回应用程序时,我看到旧线程仍在运行,locationManager仍在触发事件。
当然,我可以在onDestroy中停止线程和locationManager(我当然应该这样做),但如何解释Android在决定关闭应用程序后仍保持此功能并运行?

在最近的窗口中关闭应用程序之前,应用程序不会完全关闭。因此,您必须停止onDestroy中的线程和locationManager


希望这有帮助

退出应用程序并不意味着Android将关闭所有已启动的线程。在最坏的情况下,你的线程甚至会保留对你的活动的引用,使其无法被垃圾收集,最终导致内存泄漏(可能你已经体验到你在另一个应用程序中,Android向你显示“应用程序xy已停止工作”)。这是由于线程试图更新一个实际关闭的活动造成的

因此,最终正确的方法是最迟在
ondestory()
中关闭所有线程