当我启动应用程序时,我的堆大小增加到第一个活动的10MB,然后当我去下一个活动时,我的堆大小增加到37 MB。在第二个活动中,我按下按钮单击bitmap.recycle()
释放一些内存,所以当单击特定按钮时,堆大小减小到32MB。现在,当我完成第二个活动时,我的内存大小减少到16MB,因此提示它没有从堆栈中完全删除,因为第一个活动的原始内存大小为10MB。完成后如何从堆栈中完全移除活动?
现在,当我回到第二个活动时,它给出了下面的崩溃,显示我没有重新创建点击按钮时发布的位图。每次用户输入该活动时,我都会在第二个活动中使用相同的onCreate方法,所以它应该从xml中再次获取位图。
06-26 08:45:39.636: E/AndroidRuntime(6265): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap [email protected]
我在这里失踪了什么?一旦完成,如何从堆栈中完全移除活动?
我尝试在活动二上使用android:launchMode="singleTop"
和android:clearTaskOnLaunch="true"
,在活动二上使用android:launchMode="singleTop" android:noHistory="true"
。
任何建议将不胜感激。
认为我们需要为您的活动添加更多的代码。我不会使用.recycle()我会确保你不会丢失对你的上下文(activity)的引用 – Blundell
如果你打算重用你的第二个activity,那你为什么要回收它? –
我希望第二个活动从堆栈中完全删除,一旦我调用完成(),并重新创建时,我再次调用它。这对应用程序至关重要。 –