在销毁后重新启动活动时未调用onCreate

时间:2012-11-13 23:06:52

标签: android

当我退出我的应用程序时(通过按回或主页按钮),会调用Activity onDestroy()方法(我使用位图进行大量清理)。

当我重新打开该应用时,onCreate()不会被调用...它会直接转到onStart(),尽管Activity已完成。这导致“尝试使用回收的位图”错误。

有没有办法确保在onCreate()被销毁后始终调用Activity

编辑:我错了。正在调用onCreate()。但是,我仍然在“尝试使用循环位图”错误。如果onCreate()正在完成所有步骤,那么不会重新加载任何回收的位图吗?

3 个答案:

答案 0 :(得分:3)

你的应用程序必须做一些事情来强制确保调用onDestroy,因为如果你看一下Activity生命周期,就没有路径可以从不包含onCreate的onDestroy返回onStart。实际上,一个Activity通过反向回调将其初始化展开到使其进入恢复状态的回调。看一下官方文档here也许你在某个地方调用finish()方法来强制调用Activity?

答案 1 :(得分:0)

当您按下主页按钮时,活动不会被销毁,它只会被发送到后台,并且会调用方法onPause(),当您再次启动它时,方法onResume()将会是执行时,按下后退按钮或当您调用方法onDestroy()以强制销毁活动时执行方法finish(),然后当您尝试重新启动活动时,onCreate() 1}}将被执行。

参考this

答案 2 :(得分:0)

问题在于我如何设置ImageView图像。我从/ res加载图像的原始方法是:

    image.setImageDrawable(getResources().getDrawable(R.drawable.myImage)); //WRONG!!!!

显然,如果你回收一个位图,上面的代码将不会为位图重新分配内存,并且你的程序在尝试绘制ImageView时会崩溃。

加载已经回收的位图(或者至少是解决我的问题的方式)的正确方法是:

    image.setImageDrawable(new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.myImage))); //correct!

它仍然没有回答我的问题,为什么在退出应用程序后调用onDestroy,当我重新进入应用程序时,它正在寻找一个回收的位图。从理论上讲,应用程序应该从头开始。