DialogFragment exibido de onContextItemSelected não sobrevive emPause / onResume

Eu tenho um DialogDragment que eu posso mostrar de duas maneiras:

1) Ao tocar em um item ListView do seu OnItemClickListener

2) Ativando o menu de contexto do ListView e selecionando um item de menu

Fazer # 1 funciona bem em todos os eventos do ciclo de vida, mas se eu invoco-lo via # 2 e pausar a atividade (indo para Home) e a retomada através do alternador de tarefas, a caixa de diálogo não é mais exibida. O fragmento está lá e eu posso girar o dispositivo e mostrar o diálogo.

Eu experimentei, e se eu colocar a exibição do DialogFragment em um manipulador com um atraso de pelo menos 1/2 segundos, ele funciona.

O trecho a seguir falha - mostra a caixa de diálogo, mas, em seguida, pausar / retomar oculta:

public boolean onContextItemSelected(android.view.MenuItem item) {
    boolean consumed = false;

    switch (item.getItemId()) {
    case R.id.menu_item:
        showMyDialogFragment();
        consumed = true;
        break;
    }

    return consumed;
}

Então, o seguinte trecho funciona. Pausar / continuar exibir a caixa de diálogo novamente corretamente:

public boolean onContextItemSelected(android.view.MenuItem item) {
    boolean consumed = false;

    switch (item.getItemId()) {
    case R.id.menu_item:
        new Handler().postDelayed(new Runnable() {
            public void run() {
                showMyDialogFragment();
            }
        }, 300);

        consumed = true;
        break;
    }

    return consumed;
}

Substituir o atraso de 300 ms por um atraso de 0ms ou 250ms faz com que ele seja quebrado novamente. Isso pode ser repetido 100% do tempo.

Este é um truque terrível, obviamente, agravado pela constante que provavelmente depende da velocidade do dispositivo.

Alguém sabe por que isso está acontecendo e / ou oferece uma solução melhor? Eu passei horas sobre esta questão e isso é o melhor que eu poderia fazer.

questionAnswers(2)

yourAnswerToTheQuestion