0

首先,我使用的是 API 10。

我有活动 A 和活动 B。

我从 A 启动活动 B。然后我在 B 的 oncreate() 中调用 finish()。然后我再次从 A 启动活动 B,依此类推。当我这样做时,我的本机堆每次都会增加约 0.5 MB。

这是我在活动 B 中拥有的唯一代码。

            super.onCreate(savedInstanceState);
            getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);
            logHeap(); //keeps track of native heap size
            setContentView(R.layout.gameplay);
            finish();
            return;  

布局中的位图没有被回收吗?我不明白为什么我的本机堆大小会不断增加。

4

3 回答 3

0

您应该确保在不再需要位图时调用 bitmap.recycle()。GC 回收 Bitmap 可能需要一些时间。

于 2013-05-03T21:17:04.737 回答
0

大部分都找到了。

显然是从资产创建的

Typeface tf  = Typeface.createFromAsset(getAssets(),"fonts/Capture_it.ttf");

不是垃圾收集。

删除它似乎可以解决大部分问题。

于 2013-05-03T21:58:38.477 回答
-1

不完全是答案,而是获得答案的方法。如果您在 Eclipse 中使用 MAT ( http://www.eclipse.org/mat/ ) 并调试您的应用程序,您可能会发现导致应用程序本机堆使用量增长的确切原因。

另外:从 Eclipse 中,如果您访问 DDMS,您可能能够使用此处描述的技术来查看哪些对象正在增长。

于 2013-05-03T21:30:21.497 回答