gpt4 book ai didi

android - 在另一个 Activity 启动后,如何在一个 Android Honeycomb Activity 中释放 Drawable 内存?

转载 作者:行者123 更新时间:2023-11-30 04:30:01 24 4
gpt4 key购买 nike

我有一个包含两个 Activity 的 Android Honeycomb 应用程序;第一个有很大的Bitmap (取自资源)作为主要背景 LinearLayout我发现将此元素的背景设置为 null来自 Activity 的 onStop()方法可以节省大量内存——实际上大约 5MB。

但是,这似乎只有在我单击设备上的“ sleep ”按钮时才有效。如果我这样做了,分析器就会像你喜欢的那样简单地显示 5MB 从世界中消失。如果我开始第二个 Activity ,第一个 Activity 的 onStop()直到第二个 Activity 的 onCreate() 之后才被击中探查器建议 BitmapDrawable毕竟并没有从内存中删除——所以它就在那里,五个看不见的无用兆字节,把这个地方弄得乱七八糟。

我可以从 onPause() 中删除它,这可能会更好,但我也在使用 onStop()各种方法Dialog元素也将其背景可绘制对象清空。他们好像没有onPause()方法。

当一个 Activity 启动另一个 Activity 时,是否有推荐的方法来摆脱这些类型的大型、消耗内存的元素?

最佳答案

另外对我来说,OnPause 事件是放置“无内存”代码的更好地方。

这里是您从父 Activity 打开子 Activity 时的事件流

-- Open caller activity -- 
[ActCaller] 1311090884303: onCreate
[ActCaller] 1311090884572: onStart
[ActCaller] 1311090884699: onPostCreate savedInstanceState null
[ActCaller] 1311090884802: onResume
[ActCaller] 1311090884908: onPostResume
-- Open child activity --
[ActCaller] 1311090926270: onSaveInstanceState
[ActCaller] 1311090926374: onPause
[ActChild] 1311090926556: onCreate
[ActChild] 1311090926703: onStart
[ActChild] 1311090926807: onPostCreate savedInstanceState null
[ActChild] 1311090926911: onResume
[ActChild] 1311090927014: onPostResume
[ActCaller] 1311090927508: onStop

正如您已经注意到的,父级的 onStop 仅在子级创建完成后调用。

从两个不同的位置调用无内存代码怎么样?考虑到对话框通常不会完全覆盖调用 Activity ,因此保留它的背景是有意义的。当您打开一个新 Activity 而不是一个对话框时,也许可以设置一个标志,并且 OnPause 逻辑将仅在启动一个新 Activity 而不是一个对话框时丢弃背景。

关于android - 在另一个 Activity 启动后,如何在一个 Android Honeycomb Activity 中释放 Drawable 内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com