【问题标题】:Why is onCreate called twice but no onDestroy called between two onCreate in my Activity?为什么在我的 Activity 中的两个 onCreate 之间调用了两次 onCreate 但没有调用 onDestroy?
【发布时间】:2013-10-31 15:52:08
【问题描述】:

我的团队编写了一个复杂的 LBS/聊天 App,有一个 MainActivity 作为主要展示活动。 当此 MainActivity 启动时,第一次调用“onCreate”。 当我切换到其他几个应用程序并返回到我的应用程序的 MainActivity 时,第二次调用“onCreate”。 但是 MainActivity 的“onDestroy”从未被调用过。

某些指针(单例/全局,不属于任何活动)将“自动”设置为 null 超出我的控制范围,这会导致我的应用出现问题。

某些模块/类是否持有对 MainActivity 的引用或其他原因?

我需要帮助 -_-!

感谢所有能给我一些建议的人。

谢谢!

【问题讨论】:

  • 当屏幕灯关闭并再次打开后调用时,或者当你在其他活动中传递任何意图时,它只会调用一次创建方法,然后如果活动恢复,然后再次在恢复调用时调用亲爱的

标签: android


【解决方案1】:

OnCreate 在活动圈生命中只调用一次。 如果您的应用程序在后台并返回到前台,那么再次调用 create 的唯一原因是因为操作系统会终止此活动。 您可以使用 onSaveInstanceState() 保存数据。

【讨论】:

  • 我在developer.android.com/reference/android/app/Activity.html查看了Activity的生命周期,发现了一些我一直错误理解的东西。 App会在内存不足的时候被杀死,此时不会调用Activity的onDestroy,对吗?谢谢
  • 来自developer.android.com/guide/components/activities.html。 -" 因为 onPause() 是三个中的第一个,所以一旦创建了活动,onPause() 是保证在进程被杀死之前调用的最后一个方法——如果系统必须在紧急情况下恢复内存,那么 onStop () 和 onDestroy() 可能不会被调用。"
  • 当我的应用程序被杀死时,我想停止我的一项服务并取消初始化我的 ImageCache(执行一些 uninit 操作,例如磁盘刷新/关闭操作)。我把代码放在哪里更好?谢谢!
  • 如果您的应用程序是按照所有活动都从主活动扩展的编程方法编写的。你在主要活动上执行 onPause(),如果不是我不知道。也许是可以抓住这种情况的接收者或处理者
【解决方案2】:

当你开始活动时,这个函数被调用:onCreate()onStart()onResume(),当你去另一个活动时,onPause()被调用。

如果您想将onDestroy() 调用到您的应用程序,您必须调用this.finish();,但是,当您调用this.finish() 时,您必须在您的应用程序中处理onBackPress()

希望对你有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多