0

背景画像を設定するアクティビティがあります。また、このアクティビティを開始および終了し続けると、一部のデバイスでOutOfMemoryが発生します。

  • x-hdpiデバイスを使用しているとします。画像をhdpiバケットに入れると、画像を拡大する必要があるため、x-hdpiバケットに入れるよりもhdpiバケットに画像を入れると、より多くのメモリを消費することになりますか?実際、どのバケットに画像を配置する必要があるかを判断するにはどうすればよいですか?

  • そして、このケースのOutOfMemoryを回避する方法はありますか?OnDestroyでrecycleとsetImageResource(null)を呼び出そうとしています。しかし、そのアクティビティを再度入力すると、「リサイクルされたビットマップを描画できません」という例外が発生します。

4

1 に答える 1

1

2番目の質問への回答。

画像をデコードして背景に設定する前に、メモリオーバーフローエラーを回避するために画像のサイズを変更する必要があります。このエラーは通常、メモリ内に画像をロードするときに発生します。画像を効率的に表示する方法をご覧ください

最初の質問への回答。

同じ画像を別のフォルダに配置しても、LDPI画像をHDPIデバイスに表示する場合と同じようにメモリを消費することはありませんが、同じメモリを使用します(ただし、奇妙に見えます)。ただし、デザイナーが密度ごとに異なる画像を作成する場合、画像サイズは異なり、多少のメモリが必要になります

于 2012-12-06T11:43:41.993 に答える