我一直在为Android游戏工作并在我的N1上进行调试。起初表现不稳定。然后,我致力于清理所有分配以防止垃圾收集。这大大改善了一些事情,但我仍然看到一些垃圾收集,这些收集导致了动画中非常短暂的暂停。
将我的头发拉出一段时间后,我注意到正在进行垃圾收集的进程ID(GC_FOR_MALLOC)不是我的进程ID。 Process Ids属于“Android System”和android.process.acore(通过使用市场上的“Android System Info”应用程序确定)。 acore进程与称为数字时钟的桌面小部件相关联。我卸载了小部件,几乎完成了整个游戏,没有任何停顿。对于“Android系统”,GC有一个非常短暂的停顿。
很抱歉有很长的解释,但现在我的问题是:
我觉得有些东西我不知道,因为其他游戏没有这个问题。
由于
答案 0 :(得分:3)
你能降低游戏的帧速率吗?也许它正在使用100%的CPU,因此消耗CPU的任何其他东西都会使其滞后。这些设备的速度不如普通PC快。您还可以考虑减少创建每个帧所需的CPU,以保持帧速率足够高以保持平滑。
答案 1 :(得分:0)
private static Bitmap GetNonTransparentBitmap(int Id) {
// no transparency
Drawable tmp = myContext.getResources().getDrawable(Id);
Bitmap retval = Bitmap.createBitmap(tmp.getMinimumWidth(), tmp.getMinimumHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(retval);
tmp.setBounds(0, 0, tmp.getMinimumWidth(), tmp.getMinimumHeight());
tmp.draw(canvas);
return retval;
}