Más comprensión setRetainInstance (true)

Quéexactamente sucede cuando llamassetRetainInstance(true) en unFragment? La documentación es prácticamente inexistente y esto parece ser una función muy importante. Específicamente quiero saber cuánto de esta secuencia (que inventé) es verdadera:

El usuario gira el dispositivo.El fragmento está separado de laActivity yFragment.onDetach() se llama.La actividad se destruye;Activity.onDestroy() se llama.losActivity El objeto java se elimina (cuando es posible, por el GC).Un nuevoActivity Se crea el objeto java; su constructor, yonCreate() son llamados.EnActivity.onCreate() o bien tenemossetContentView(...) que establece un diseño que contiene un fragmento, o usamosFragmentTransaction para añadir un fragmento.Realmente no estoy seguro de esto, pero asumo que Android es lo suficientemente inteligente como para encontrar el fragmento antiguo, y llamarFragment.onAttach() para volver a unirlo al nuevoActivitySiguiente (o antes? Quien sabe?)Activity.onResume() se llama.

Entonces, ¿es correcto? ¿Es Android lo suficientemente inteligente como para encontrar el fragmento antiguo, incluso si lo uso explícitamente?FragmentTransaction.add(new MyFragment(), ...) ¿la primera vez? Y si es así, ¿cómo evito agregar?otro fragmento enonCreate()? ¿Necesito hacer algo como esto ?:

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta