1

私はこれを求めてネット全体を検索してきました。正しいことを見つけることができないようです。

「Androidゲームのはじまり」という本を使って、2DスクロールのAndroidゲームを作りました。ここまでは順調に進んでいましたが、大量のビットマップを追加すると、すべてのデバイスでゲームがクラッシュします。そのため、ビットマップを削除し、ジンジャーブレッド、ハニカム、およびジェリービーン デバイスで実行できるようにしました。しかし、ICE CREAM SANDWICH デバイスでは実際には機能せず、イライラしています。

あなたが私を助けてくれることを願っています。

logcat エラーは次のとおりです。

09-23 11:22:54.866: E/AndroidRuntime(3525): java.lang.OutOfMemoryError
09-23 11:22:54.866: E/AndroidRuntime(3525): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
09-23 11:22:54.866: E/AndroidRuntime(3525): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:483)
09-23 11:22:54.866: E/AndroidRuntime(3525): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:549)
09-23 11:22:54.866: E/AndroidRuntime(3525): at framework.implementation.AndroidGraphics.newPixmap(AndroidGraphics.java:49)
09-23 11:22:54.866: E/AndroidRuntime(3525): at game.LoadingScreen.update(LoadingScreen.java:27)
09-23 11:22:54.866: E/AndroidRuntime(3525): at framework.implementation.AndroidFastRenderView.run(AndroidFastRenderView.java:48)
09-23 11:22:54.836: E/dalvikvm-heap(3525): Out of memory on a 3840016-byte allocation.

成長ヒープは 33.98MB に達しました

4

3 に答える 3

1

1.実際には、ほとんどの時間画像を使用しています。andorid では、イメージはビットマップによって処理されるため、イメージを変更するたびにビットマップ オブジェクトが作成されるため、これらのビットマップはより多くの「ヒープ メモリ」を消費します。そのため、java.lang.OutOfMemoryError 例外を回避するために「オブジェクト プーリング メソッド」を使用する必要があります。

オブジェクトプーリングを作成する方法のリンクは次のとおりです。

リンク: http://www.devahead.com/blog/2011/12/recycling-objects-in-android-with-an-object-pool-to-avoid-garbage-collection/

2.4.X android バージョンのデバイスでは、[設定] に [開発者設定] が表示されます。開発者の設定では、できるだけ早くバックグラウンドですべてのアクティビティを破棄する「アクティビティを保持しない」を有効にする必要があります。

この場合、アプリのアクティビティはクラッシュしてはなりません。クラッシュした場合、アクティビティは Android アクティビティのライフサイクルに従いません。

参考までに、リンクは次のとおりです。http://developer.android.com/training/basics/activity-lifecycle/index.html

于 2013-09-23T03:44:05.463 に答える
0

コンストラクターのように、更新メソッドの外側でアセットをロードしようとします。おそらく、更新が実行されるたびにロードされます。これは、deltaTime やフレームレートなどとそのオーバーロードによって実行されます。更新メソッドは通常、1 秒間に 100 回実行される可能性があります。 g.newPixmap() 毎回ビットマップにメモリを割り当てます

于 2013-09-25T12:47:43.527 に答える