2014-08-28 52 views
1

我有一个应用程序,它使用SurfaceView尽可能快地绘制动画。除了时不时的短暂动画,它几乎是完美的。这个短时间持续大约10毫秒,这并不是很多,但是足够大以便被用户注意到。Android应用程序中的堆空间

我看到这些冻结是由垃圾收集器触发的堆空间变化引起的。在应用程序的清单中添加android:largeHeap="true"尚未解决问题。

有谁知道我该如何摆脱这个烦人的问题?

回答

1

这就是垃圾收集器试图释放一些资源的应用程序标记。你需要看到logcat - 它会在那里看到。我建议优化内存使用(降低位图大小,或者修改加载方案),或者(如果可能的话)找到一些间隔,在这个间隔内没有任何动画被强化,并且在那一点做System.gc(),隐藏来自用户的冻结。

+0

我已经知道冻结的原因,因为我已经看到了log cat中的相关消息。正如你所建议的,我会尝试在我自己的系统上调用'System.gc()'... – VD63 2014-08-28 14:07:54

0

看起来Android并不足以增加应用程序的堆空间。

尝试在Manifest文件中使用largeHeap设置。通过这个设置,Android每次增长堆时都会留下更多的可用内存,从而最大限度地降低了达到当前限制的可能性。

你只需要设置largeHeap="true"您的AndroidManifest.xml

+0

正如我的问题所示,我已经尝试使用'largeHeap =“true”',但没有成功...... – VD63 2014-08-28 18:51:35

相关问题