活动重新启动,但之前启动的线程继续运行
问题描述:
我正面临一些非常奇怪的事情。 在用户使用应用程序的过程中,我创建线程并使用locationManager获取位置更新。活动重新启动,但之前启动的线程继续运行
现在,在用户离开应用程序并且Android触发onDestroy并且用户稍后回到应用程序的情况下,我发现旧线程仍在运行,locationManager仍然触发事件。 当然,我可以在onDestroy(我当然应该这样做)中停止线程和locationManager,但是如何解释Android在决定终止应用后继续运行并运行?
答
离开该应用程序并不意味着Android将关闭所有已启动的线程。在最糟糕的情况下,你的线程甚至会保留对你的活动的引用,使它无法被垃圾收集,并最终导致内存泄漏(也许你已经体验到你在另一个应用程序中,而Android显示你“App xy已停止工作”) 。这是由你的线程试图更新一个实际关闭的活动引起的。
所以正确的做法最后是自己关闭所有线程,最迟在onDestroy()
。
答
直到您在最近的窗口中关闭它,该应用才会完全关闭。所以你必须在onDestroy中停止线程和locationManager。
希望这会有所帮助!