Por que Atividade está pendurada enquanto volta dos poucos fragmentos de outra atividade?
Eu tenho duas atividades Atividade A e B, a atividade A tem 3 fragmentos a1, a2 e a3. a3 é o fragmento selecionado padrão que mostra vídeos, a2 contém um grande textView e um pequeno edittext e a1 contém um listview.
Agora na barra de título da atividade A eu tenho um botão, e como está na barra de título, é visível de todos os 3 fragmentos. Ao clicar neste botão eu abro a Atividade B. usando a função Following.
public void inviteUser() {
if ( getUserType() == ACTIVE ) {
Intent intent = new Intent(this, B.class);
intent.putExtra(Constants.MEETING_ID, (long) session.getSessionId());
intent.putExtra(Constants.INVITE_FROM_SESSION, true);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_SINGLE_TOP);
this.startActivityForResult(intent, RESULT_OK);
} else {
Toast.makeText(this, getString(R.string.strNotAPresenterMsg), Toast.LENGTH_LONG).show();
}
}
Dentro B eu chamo a suasetResult(ResultCode) and finish()
. Agora eu tenhodois problemas quando euinicie B dos Fragmentos a1 e a2,
quando eu começo a atividadeB do fragmento a3, Ele retorna imediatamente e se comporta normalmente.
Eu tentei substituir todos os métodos de ciclo de vida desses fragmentos e colocar as instruções de log dentro de cada método. Dor é que a sequência de chamada de método é normal e igual para ambos os casos.
Eu tentei mudar as bandeiras da intenção, mas sem ganho.
Eu adicionei o falgandroid:configChanges="keyboardHidden|orientation"
para todas as atividades do meu aplicativo.
Espero ter explicado o problema, no caso de alguém precisar de alguma parte específica do código. por favor comente. Vou editar a questão e acrescentar isso. Ajude vcs !!!
EDITAR Eu estava testando no GingerBread 2.3.6 não estava funcionando, mas acabei de verificar isso no emulador rodando JellyBean e ele está funcionando bem. Parece que o problema está relacionado à versão do sistema operacional. Qualquer ideia ?
EDIT 2 Um ponto importante de observação é que, quando em B, pressiono o botão voltar, após alguns mili segundos, o onResume () da Activity anterior e seus fragmentos são chamados. Mas mesmo depois que B está na tela há algum tempo e parece que o telefone ficou pendurado por alguns segundos ....
EDITAR 3 Só tenho que saber que onStop () e OnDestroy () de B não são chamados quando eu inicio o B do Fragmento a1 ou a2. No entanto, eles são chamados perfeitamente quando estou na a3. Qual poderia ser a razão disso?
O documento diz que "O tempo de vida visível de uma atividade acontece entre uma chamada para onStart () até uma chamada correspondente a onStop (). Durante esse tempo, o usuário pode ver a atividade na tela, embora ela não esteja em primeiro plano e interagindo com o usuário. "
Como onStop () não é garantido, a atividade se comporta de maneira anormal quando não é chamada. Também vim a saber que nos dispositivos HoneyComb + ela é sempre chamada. Eu tentei chamar onStop () dentro onPause (), mas isso não está funcionando. O que faço agora ?