首页 文章

在哪种情况下应该覆盖onDestroy()?

提问于
浏览
0

我正在阅读活动生命周期,并阅读有关启动和销毁活动的文档,请访问以下链接:http://developer.android.com/training/basics/activity-lifecycle/starting.html

以下文字来自链接:

销毁活动当活动的第一个生命周期回调是onCreate()时,它的最后一个回调是onDestroy() . 系统会将您的活动上的此方法作为活动实例从系统内存中完全删除的最终信号 . 大多数应用程序不需要实现此方法,因为本地类引用随活动一起销毁,并且您的活动应在onPause()和onStop()期间执行大多数清理 . 但是,如果您的活动包括您在onCreate()期间创建的后台线程或其他长时间运行的资源(如果未正确关闭可能会泄漏内存),则应在onDestroy()期间将其终止 .

有人可以提供后台线程或“其他长时间运行的资源”的示例(或示例),这些资源可以保证onDestroy()覆盖,并解释它们如何避免常规的onDestroy()清理?

澄清:我理解onPause(),onStop()和onDestroy()是如何工作的,这不是我所要求的 . 我要求更深入地澄清什么会保证覆盖onDestroy()

2 回答

  • 0

    好吧,onDestroy()是一个在你的活动关闭时由框架调用的方法 . 它被调用以允许您的活动执行它可能希望执行的任何关闭操作 . 该方法与垃圾收集实际上没有任何关系 . 特别是,它与C destuctors无关(尽管它的名字) .

    此方法使您的程序有机会执行清理资源等操作,以便它们不会污染关联的应用程序 . 如果您没有要执行的关闭操作,则无需覆盖它 . 基类什么都没做 .

  • 2

    当你不能把它放在 onPause()onStop() 时,你必须把 cleanUp logic 放在 onDestroy() 中 .

    示例:您希望您的活动仅在完成时执行某些操作,即仅执行一次 . 您不能将该逻辑放在 onStop() 中,因为无论何时您的活动 loses focusonPause() - 只要您的活动 goes to background 都会调用它 .

相关问题