android ImageViewの割り当て問題 setImageResourceとsetImageBitmap
1.
要件に応じて、最初のものは簡単ですが、それはスペースを占有し、リソースが時間内にリサイクルされません、画像はoutofmemoryエラーから簡単に多くの、大規模な実行であり、2番目は手動で設定することがより面倒ですが、それは安全である
2. 2.を使用した方が良い
最初のsetImageResourceは、リソースIDでdrawableされたリソースからファイルを探してdrawableオブジェクトに描画するものです。この方法は、自動的に解像度に適応します。画像リソースが大きすぎないため、設定頻度が低い場合に適しています。しかし、大きな画像や、繰り返し画像を設定する必要がある場合、このメソッドを呼んで生成されたdrawableは、ビットマップファクトリーによってビットマップが生成され、その一部がCライブラリを呼び出す必要があるため、ネイティブのローカルメモリ空間の一部とjvmのメモリ空間の一部を開放する必要があり、ビットマップオブジェクトを生成することになります。ネイティブのメモリ空間はCによって開放されますが、jvmのgcガベージコレクタはこの部分の空間をリサイクルできないので、頻繁にsetImageResourceを呼んで、手動でリサイクルを呼ばないと、ネイティブメモリ空間は解放されにくく、jvmのメモリはリサイクルが間に合わないので、メモリオーバーフローがかなり簡単に発生します。
setImageBitmapは、大きな画像を頻繁に設定する必要がある場合、bitmapfactoryを通じてビットマップを生成してから設定し、毎回設定前に前のビットマップのリサイクルを手動で落として、リサイクル可能な状態にします。これにより、メモリリークやオーバーフローを大きく防ぐことができます。
したがって、あなたのニーズに応じて、あなたの画像が頻繁に設定され、あまり大きくない場合は、最初のものを使用してください。何度も設定を更新する必要がある場合は、2番目のものを使用し、それを設定する前に手動でリサイクルすることを忘れないでください。
3. setImageResource(id) デバイスの解像度に画像サイズを合わせる。
setImageBitmap(BitmapFactory.decodeResource(res,id)) サイズは手動で調整する必要があります。
サイズを手動で設定することで、メモリのオーバーフローを防ぐことができます!
概要を説明します。
setImageResource(id): シンプルだが、メモリを消費する。
setImageBitmap(BitmapFactory.decodeResource(res,id)): 比較的面倒だが、メモリのオーバーフローを防ぐことができる。
から引用しています。
http://bbs.eoe.cn/thread-327898-1-1.html
関連
-
Android プロジェクト コンパイル時に com.android.builder.internal.aapt.v2.Aapt2Exception に遭遇しました。AAPT2 エラー: 詳細はログを確認してください。
-
アンドロイド アルメアビ アルメアビ-v7a
-
ADBサーバーがACKしなかった
-
BUG: android アクティビティはエクスポートされるか、インテント・フィルタを含む必要があります。
-
Androidです。ListView.addHeaderView()の使用方法と注意点
-
java.lang.SecurityException を解決してください。android パッケージは 10065 に属していません。
-
Android TextViewの自動改行問題
-
Android TextViewは、あるテキストのカラー・フォント・サイズを設定する
-
Android - Androidに多階層メニュー連携操作を実装。
-
Android デフォルトのホームアプリケーション(Launcher)起動プロセスのソースコード解析
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
com.android.tools.build:gradle:3.0.0 が見つかりませんでした。
-
android:ems="10 "の意味。
-
Androidです。GridViewコントロールの使用
-
Android ConstraintLayout コンストレイントレイアウト
-
android:paddingとandroid:marginの違いについて。
-
Android Bluetooth接続
-
Android動的ブロードキャストの追加許可
-
android.content.res.Resources$NotFoundException: 文字列リソースID #0x1
-
INSTALL_FAILED_INVALID_APK: 分割された lib_slice_5_apk が複数回定義されている 例外
-
Android SDKです。sdkmanagerコマンドラインツールの使用(パッケージの表示、インストール、アップデート、アンインストール)