私は Android >= 2.1 用のリアルタイム アーケード ゲームを書いています。ゲームプレイ中は、GC を誘惑しないようにメモリを割り当てません。GC が呼び出されると、プロセッサが 70 ~ 200 ミリ秒かかるためです。ユーザーはこれを「ああ、あのゲームは遅れている...」と見なします。
LogCatをチェックしました。GC_FOR_MALLOC または GC_EXPLICIT がたくさんあります。しかし...私のプロセスのPIDからではありません! ゲームが原因ではありません。それらは、バックグラウンドで実行されている他のプロセスが原因で発生します。いくつかの壁紙、ウィジェット、ラジオ、電子メール、天気予報、その他のサービス...
私はそれを完全に理解していません。たとえば、壁紙が消えると、その onPause() が呼び出されると思います。したがって、すべてのスレッドを停止し、メモリを割り当てない (または System.gc() を呼び出す) 必要があります。多分それは間違って実装されていますか?知らない。しかし、時々 GC を引き起こしている Android サービスもいくつかあります...奇妙です。
Android <= 2.2 アーキテクチャの大きな欠陥ですか? Android 2.3では、時間のかかる同時 GC が導入されています。
ゲームをスムーズに実行するにはどうすればよいですか?