Compreensão adicional setRetainInstance (true)

o queexatamente acontece quando você ligasetRetainInstance(true) com umFragment? A documentação é praticamente inexistente e esta parece ser uma função muito importante. Especificamente, quero saber quanto dessa sequência (que inventei) é verdadeira:

O usuário gira o dispositivo.O fragmento é separado doActivity eFragment.onDetach() é chamado.A atividade é destruída;Activity.onDestroy() é chamado.oActivity O objeto java é excluído (quando possível, pelo GC).Um novoActivity Objeto java é criado; seu construtor eonCreate() são chamados.EmActivity.onCreate() nós também temossetContentView(...) que define um layout contendo um fragmento, ou usamosFragmentTransaction para adicionar um fragmento.Eu realmente não tenho certeza sobre isso, mas eu suponho que o Android é inteligente o suficiente para encontrar o fragmento antigo, e chamarFragment.onAttach() para recolocá-lo no novoActivityPróximo (ou antes? Quem sabe?)Activity.onResume() é chamado.

Então está correto? O Android é inteligente o suficiente para encontrar o fragmento antigo, mesmo se eu usar explicitamenteFragmentTransaction.add(new MyFragment(), ...) a primeira vez? E se sim, como evito adicionaroutro fragmento emonCreate()? Eu preciso fazer algo assim ?:

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

questionAnswers(2)

yourAnswerToTheQuestion