我正在阅读活动生命周期,并阅读以下链接中有关启动和销毁活动的文档: http://developer.android.com/training/basics/activity-lifecycle/starting.html
以下文字来自链接:
销毁活动
虽然活动的第一个生命周期回调是onCreate(),但它非常 最后一个回调是onDestroy()。系统调用此方法 活动作为您的活动实例的最终信号 完全从系统内存中删除。
大多数应用程序不需要实现此方法,因为本地类 引用会随着活动而被破坏,您的活动应该被破坏 在onPause()和onStop()期间执行大多数清理。但是,如果你的 活动包括您在此期间创建的后台主题 onCreate()或其他可能潜在泄漏的长期运行资源 记忆如果没有正确关闭,你应该杀死他们 的onDestroy()。
有人可以提供后台线程或“其他长时间运行资源”的示例(或示例)来保证onDestroy()覆盖,并解释它们如何避免常规onDestroy()清理?
澄清:我理解onPause(),onStop()和onDestroy()是如何工作的,这不是我所要求的。我要求更深入地澄清什么会保证覆盖onDestroy()
答案 0 :(得分:2)
嗯,onDestroy()是一个在你的活动关闭时由框架调用的方法。它被调用以允许您的活动执行它可能希望执行的任何关闭操作。该方法与垃圾收集实际上没有任何关系。特别是,它与C ++ destuctors无关(尽管它的名字)。
此方法使您的程序有机会执行清理资源等操作,以便它们不会污染关联的应用程序。如果您没有要执行的关闭操作,则无需覆盖它。基类基本上什么也没做。
答案 1 :(得分:0)
如果无法将cleanUp logic
放入onDestroy()
或onPause()
,则必须将onStop()
放入onStop()
。
示例:您希望您的活动仅在完成时才执行某些操作,即只执行一次。您无法将该逻辑放在loses focus
中,因为无论何时您的活动onPause()
或goes to background
- 都会在您的活动{{1}}时调用。