我有一个应用程序使用SurfaceView
尽可能快地绘制动画。它几乎是完美的,只是有时,动画会在短时间内冻结。这个短暂的时间大约持续10毫秒,但不是很大,但足够大,以至于用户可以注意到。
我已经看到这些冻结是由堆空间的变化引起的,这些变化是由垃圾收集器触发的。在我的应用程序清单中添加android:largeHeap="true"
并没有解决问题。
有谁知道如何摆脱这个恼人的问题?
答案 0 :(得分:1)
垃圾收集器试图释放一些资源。你需要看看logcat - 它会在那里可见。
我建议优化内存使用量(降低位图大小,或者修改加载方案),或者(如果可能的话)找到一些没有任何强化动画的间隔,并在那时做System.gc() ,以隐藏用户的冻结。
答案 1 :(得分:0)
似乎Android的速度不足以增加应用的堆空间。
尝试在Manifest文件中使用largeHeap设置。启用该设置后,Android每次增加堆时都会留下更多可用内存,从而最大限度地降低达到当前限制的可能性。
您只需在AndroidManifest.xml的应用标签上设置largeHeap="true"