0

ImageView のみで構成されるアプリケーションを作成しました。

また、アプリの要件によると、解像度が 1024*780 の高品質の画像から 200*250 の解像度の画像を使用する必要がありました。すべての画像を合計すると、ほぼ 45 枚の画像になります!!!.

ハイエンド (ヒープ メモリ >=32) デバイスではスムーズに動作し、ローエンド (ヒープ メモリ <32) デバイスでは & MICROMAX A 65 でも、いくつかのクラッシュ レポートを受け取り、試してみました。 16MB のヒープ メモリ エミュレータ。

最初の画像をクリックすると、次のように表示されます。

06-29 05:16:28.572: W/dalvikvm(846): threadid=1: thread exiting with uncaught exception     (group=0x40a70930)
06-29 05:16:28.665: E/AndroidRuntime(846): FATAL EXCEPTION: main
06-29 05:16:28.665: E/AndroidRuntime(846): java.lang.OutOfMemoryError
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.content.res.Resources.loadDrawable(Resources.java:1965)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.content.res.Resources.getDrawable(Resources.java:660)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.widget.ImageView.resolveUri(ImageView.java:616)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.widget.ImageView.setImageResource(ImageView.java:349)
06-29 05:16:28.665: E/AndroidRuntime(846):  at com.mshah.learnandplaybasiccolors.Learn.setImageWithSound(Learn.java:123)
06-29 05:16:28.665: E/AndroidRuntime(846):  at com.mshah.learnandplaybasiccolors.Learn.onClick(Learn.java:88)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.view.View.performClick(View.java:4202)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.view.View$PerformClick.run(View.java:17340)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.os.Handler.handleCallback(Handler.java:725)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.os.Looper.loop(Looper.java:137) 
06-29 05:16:28.665: E/AndroidRuntime(846):  at android.app.ActivityThread.main(ActivityThread.java:5039)
06-29 05:16:28.665: E/AndroidRuntime(846):  at java.lang.reflect.Method.invokeNative(Native Method)
06-29 05:16:28.665: E/AndroidRuntime(846):  at java.lang.reflect.Method.invoke(Method.java:511)
06-29 05:16:28.665: E/AndroidRuntime(846):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-29 05:16:28.665: E/AndroidRuntime(846):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-29 05:16:28.665: E/AndroidRuntime(846):  at dalvik.system.NativeStart.main(Native Method)

ビットマップを使用していません。ビットマップ エラーが発生しています。このエラーを解決するにはどうすればよいですか ???

また

そのようなデバイスのサポートを除外する必要がありますか?

4

2 に答える 2

2

これらすべてのイメージを同時にメモリにロードしないでください。なぜですか?サムネイルのギャラリーなどを作成し、必要に応じて遅延読み込みを行う必要があります。これを回避する方法はありません。Android は動作するためのメモリ フットプリントが非常に小さいため、ハイエンド デバイスでも、現在の方法でイメージをロードするとメモリが不足します。

于 2013-06-29T05:25:31.003 に答える