我正在为 Android >= 2.1 编写实时街机游戏。在游戏过程中,我不分配内存,不引诱 GC。因为如果 GC 调用,它需要处理器 70-200 毫秒。用户将此视为“哦,不,该游戏落后......”。
我检查了 LogCat。有很多 GC_FOR_MALLOC 或 GC_EXPLICIT。但是......不是来自我的进程的PID!我的游戏没有引起他们。它们是由于其他进程在后台运行而引起的。一些壁纸、小部件、收音机、电子邮件、天气检查和其他服务......
我完全不明白。例如,当壁纸消失时,我想它的 onPause() 会被调用。因此,它应该停止所有线程并且当然不分配任何内存(或调用 System.gc())。也许它被错误地实施了?我不知道。但是有一些Android服务,也会时不时造成GC……很奇怪。
这是一个很大的 Android <= 2.2 架构缺陷吗?Android 2.3引入了并发 GC,耗时更少。
我可以做些什么来确保我的游戏能够顺利运行?