Каков наилучший способ избежать утечек памяти во фрагменте AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Каков наилучший способ избежать утечек памяти во фрагменте Android

Сообщение Anonymous »

Я нашел много способов избежать утечек памяти во фрагменте Android, но какой из них лучший?

1. Установите для представления значение null при вызове onDestroyView

public class LeakyFragment extends Fragment{

private View mLeak; // retained

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mLeak = inflater.inflate(R.layout.whatever, container, false);
return mLeak;
}

@Override
public void onDestroyView() {
super.onDestroyView();
mLeak = null; // now cleaning up!
}
}


2. Установите для всех дочерних представлений значение null и удалите представление

@Override
public void onDestroyView(){
super.onDestroyView();
unbindDrawables(mLeak);
}

private void unbindDrawables(View view){
if (view.getBackground() != null){
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup && !(view instanceof AdapterView)){
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++){
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}


Подробнее здесь: https://stackoverflow.com/questions/288 ... d-fragment
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»