Dalsze zrozumienie setRetainInstance (true)

Codokładnie dzieje się, gdy dzwoniszsetRetainInstance(true) naFragment? Dokumentacja praktycznie nie istnieje, a to wydaje się bardzo ważną funkcją. W szczególności chcę wiedzieć, jaka część tej sekwencji (którą wymyśliłem) jest prawdziwa:

Użytkownik obraca urządzenie.Fragment jest odłączony odActivity iFragment.onDetach() jest nazywany.Działalność zostaje zniszczona;Activity.onDestroy() jest nazywany.TheActivity obiekt java jest usuwany (jeśli to możliwe przez GC).NowyActivity obiekt java jest tworzony; jego konstruktor ionCreate() są nazywane.WActivity.onCreate() albo mamysetContentView(...) który ustawia układ zawierający fragment lub używamyFragmentTransaction dodać fragment.Naprawdę nie jestem tego pewien, ale zakładam, że android jest wystarczająco inteligentny, aby znaleźć stary fragment i zadzwonićFragment.onAttach() ponownie podłączyć go do nowegoActivityDalej (lub wcześniej? Kto wie?)Activity.onResume() jest nazywany.

Czy to prawda? Czy Android jest wystarczająco inteligentny, aby znaleźć stary fragment, nawet jeśli wyraźnie go używamFragmentTransaction.add(new MyFragment(), ...) pierwszy raz? A jeśli tak, to jak unikać dodawaniainne fragment wonCreate()? Czy muszę zrobić coś takiego ?:

    if (getSupportFragmentManager().findFragmentByTag("foo") == null)
    {
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(new FooFragment(), "foo").commit();
    }

questionAnswers(2)

yourAnswerToTheQuestion