10

これは、アプリがスプラッシュ スクリーンからメイン ページに読み込まれるときに発生します。シミュレーターではなくデバイスでのみ発生します。

05-17 08:10:16.627: I/dalvikvm-heap(14021): Grow heap (frag case) to 20.580MB for     2424256-byte allocation
05-17 08:10:16.666: D/dalvikvm(14021): GC_FOR_ALLOC freed 1K, 3% free 21000K/21511K, paused 21ms
05-17 08:10:16.697: D/dalvikvm(14021): GC_CONCURRENT freed 116K, 3% free 20885K/21511K, paused 2ms+2ms
05-17 08:10:16.720: D/dalvikvm(14021): GC_FOR_ALLOC freed 44K, 4% free 20841K/21511K, paused 10ms
05-17 08:10:16.728: I/dalvikvm-heap(14021): Grow heap (frag case) to 24.533MB for 4310896-byte allocation

私はEcplise MATを使用しました - 解決されたバイト割り当て - Android.Graphics.Bitmap $preloaded images...

私が使用しているデバイスは、Google Nexus Prime、Android 4.0 です。

誰かが同じことに遭遇しましたか?誰かがいくつかの専門知識を投げることができますか....

4

2 に答える 2

14

私は同じ問題を経験し、解決策を見つけました。

リソースからビットマップをロードしていますか? その場合は、「drawable」または「drawable-mdpi」に保持するのではなく、対応する描画可能なフォルダーに配置してみてください。

プレーンな drawable フォルダーに画像リソースがある場合、システムにとっては drawable-mdpi を意味します。したがって、高または超高 dpi のデバイス (Galaxy Nexus は非常に高いと思います) は、デバイスの dpi に一致するようにそのリソースを拡張します。

リソースのサイズが 1 つしかない場合は、それらを drawable-nodpi に配置すると、そのまま使用されます。ただし、一部のレイアウトはこれによって影響を受ける可能性があるため、特定の画像 (ボタン画像など) を drawable フォルダーに保持し、背景やその他の大きなリソースを drawable-nodpi に移動しました。

お役に立てれば ;)

于 2012-05-17T12:44:12.713 に答える
10

Bitmapおそらく、例外が発生する非常に大きなものをデコードしようとしていOutOfMemoryます。これは、実行しようとしている操作が、ヒープ メモリの消費量に関して、デバイス上の各アプリケーションに許可されている VM バジェットを超えていることを意味します (デバイスでは 24 MB のように見えますが、エミュレータではおそらくそれ以上であるため、そこでは起こりません!)。

Bitmapたとえば、2 倍でサンプリングしてみてください。

BitmapFactory.Options o = new BitmapFactory.Options();
o.inSampleSize = 2;
Bitmap b = BitmapFactory.decodeFile(pathToBitmap, o);
于 2012-05-17T12:25:56.240 に答える