【发布时间】:2012-02-28 09:23:34
【问题描述】:
我需要在onDestroy() 的Activity 中执行“长时间运行”的清理操作。最好的方法是什么?
如果我使用Thread 执行此操作,我的onDestroy() 将立即返回;但是 Thread 引用会发生什么?我正在寻找有关我需要在这里注意的任何影响/陷阱/绊脚石的建议,因为我假设即使在 Activity 被销毁后该过程仍然存在。
背景:
我在我的应用程序中使用JmDNS。当用户完成我的应用程序后,我想清理 JmDNS 实例。我使用JmDNS 类的close() 方法来做到这一点。但是,此方法需要 5 秒以上 才能完成。结果,用户在触摸返回键后很长一段时间都在屏幕上看到了我的Activity。
我还没有弄清楚为什么close() 需要这么长时间,但同时我也意识到我真的不需要等待关闭成功完成。我所需要的只是一种“触发”关闭并完成它的方法。
【问题讨论】:
-
jmdns 通常用于发现网络服务,我不知道为什么您需要保持它打开并运行直到应用程序最终关闭。我通常在找到远程服务器并完成后立即关闭它,同时提示用户一个 ProgressDialog。
-
是的,这是我的正常用例。我还有另一个用例,我需要在应用程序的整个生命周期内持续监控发现/丢弃的服务并采取相应措施。
标签: java android multithreading lifecycle jmdns