いつもお世話になっております。
現在ソースコードを見直しメモリ解放について悩んだので質問させていただきます。
Activityから別Activityに遷移する際のメモリ解放のためonDestroy()内で以下のように処理をしていました。
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG,"onDestroy");
memoryRelease();
}
private void memoryRelease() {
Log.v(TAG, "memoryRelease");
if (button!= null) {
button.setOnClickListener(null);
button= null;
}
if (imageView!= null) { volumeImage.setImageResource(0); volumeImage = null; } }
今まではソースコード内で設定した画像やOnClickListener等をnullにしていたのですが、
layout側で設定したものもまとめてここで解放処理をするべきかと思いできるか調べ
public static final void cleanupView(View view) {
if(view instanceof ImageView) {
ImageView iv = (ImageView)view;
iv.setImageDrawable(null);
}
}
このページを見るにいちいち ImageView の 〇〇のsetImageResource(0)など変数単位で解放するのではなく
view内に存在するクラス単位で解放できるということなんでしょうか?
実際に試したところImageViewを使用しているのにif文には引っかからなかったので意図するものと違うのかもしれません。
拙い説明で分かりにくいと思いますがよければ
質問への回答・どのようにメモリ解放している等の回答お願い致します。
あなたの回答
tips
プレビュー