Kiedy dokładnie przecieka korzystanie z (anonimowych) klas wewnętrznych?

Czytałem kilka artykułów na temat wycieków pamięci w Androidzie i oglądałem ten interesujący film z Google I / Ow temacie.

Mimo to nie rozumiem w pełni tej koncepcji, zwłaszcza gdy jest to bezpieczne lub niebezpieczne dla użytkownikaklasy wewnętrzne wewnątrz działania.

Zrozumiałem to:

Przeciek pamięci wystąpi, jeśli instancja klasy wewnętrznej przetrwa dłużej niż jej klasa zewnętrzna (działanie). ->W jakich sytuacjach może się to zdarzyć?

W tym przykładzie przypuszczam, że nie ma ryzyka wycieku, ponieważ nie ma możliwości rozszerzenia klasy anonimowejOnClickListener będzie żył dłużej niż aktywność, prawda?

    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.dialog_generic);
    Button okButton = (Button) dialog.findViewById(R.id.dialog_button_ok);
    TextView titleTv = (TextView) dialog.findViewById(R.id.dialog_generic_title);

    // *** Handle button click
    okButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            dialog.dismiss();
        }
    });

    titleTv.setText("dialog title");
    dialog.show();

Czy ten przykład jest niebezpieczny i dlaczego?

// We are still inside an Activity
_handlerToDelayDroidMove = new Handler();
_handlerToDelayDroidMove.postDelayed(_droidPlayRunnable, 10000);

private Runnable _droidPlayRunnable = new Runnable() { 
    public void run() {
        _someFieldOfTheActivity.performLongCalculation();
    }
};

Mam wątpliwości co do tego, że zrozumienie tego tematu wiąże się ze szczegółowym zrozumieniem tego, co jest przechowywane, gdy działanie jest niszczone i odtwarzane.

To jest?

Powiedzmy, że właśnie zmieniłem orientację urządzenia (co jest najczęstszą przyczyną wycieków). Gdysuper.onCreate(savedInstanceState) zostanie wezwany w moimonCreate(), czy przywróci to wartości pól (jak to miało miejsce przed zmianą orientacji)? Czy to również przywróci stany klas wewnętrznych?

Zdaję sobie sprawę, że moje pytanie nie jest zbyt precyzyjne, ale naprawdę doceniłbym wszelkie wyjaśnienia, które mogłyby uczynić rzeczy jaśniejszymi.

questionAnswers(1)

yourAnswerToTheQuestion