Aplicação de entrar em modo ANR
Pergunta
Quando o utilizador pressiona o botão voltar na minha aplicação.Aqui é o cenário:
- Usuário inicia o aplicativo - Atividade mostra-se
- Usuário pressiona botão voltar
- Utilizador re-inicia o aplicativo. Neste ponto, a aplicação mostra uma tela em branco, nenhum dos botões(home/volta) responder, após
algum tempo Força-fechar a caixa de diálogo aparece.
NOTA:Se o usuário pressionar "Home" e, em seguida, reinicia o aplicativo, isso não acontece, apenas se o usuário clicar em "Back" e, em seguida, reinicia-lo.
Na minha onCreate() eu tenho alguns configuração de rede de código.No entanto, onDestroy() tem o correspondente código de limpeza, então eu não entendo por que isso está acontecendo.
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(DEBUG_TAG, "onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Aquire the multicast lock
// Create an instance of JmDNS
// Add a listener for Bonjour services of a given type
}
@Override
protected void onDestroy() {
Log.d(DEBUG_TAG, "onDestroy()");
// Remove the services listener
// Set the reference to JmDNS instance null
// Release the multicast lock
super.onDestroy();
}
Não sei o que está acontecendo, e não sei como depurar isso.
Curiosamente - "Zeroconf Navegador" um popular aplicativo que eu fiz o download a partir do Android Market para usar para depurar minas parece ter o mesmo problema.
EDITAR:Alterado o código de onStart()/onStop() para onCreate()/onDestroy().Mesmo problema de antes.
EDITAR:Para qualquer pessoa que executa em um problema semelhante, isto é o que estava causando a minha miséria.Código Android não era o culpado:http://sourceforge.net/tracker/index.php?func=detail&aid=2933183&group_id=93852&atid=605791
Solução
Você pode estar fazendo pedidos de rede no thread da INTERFACE do usuário.Você pode checkout Indolor Threading e AsyncTask para um manuseio.
Lembre-se que pode ser uma boa idéia para fazer a sua configuração e tear-down em onCreate
e onDestroy
. onStart
pode ser chamado várias vezes durante a atividade ciclo de vida;é o código de proteção contra este caso?