Quando installo la mia app su determinati dispositivi (sembra essere 4.4.4 e successive) A volte vedo il seguente ANR in com.android.launcher dopo i seguenti passi:ANR in com.android.launcher dopo aver toccato indietro
- dall'attività a, lancio attività B
- in Attività B, premere il sistema di back chiave e nel metodo onBackPressed() di attività B rilancio Activity a (codice è al di sotto).
- Il tasto di ritorno del sistema rimane premuto per 5 secondi, lo schermo diventa nero, la mia app si chiude e viene avviato Launcher. Lo studio dei registri mostra un ANR nel processo di avvio.
ANR a com.android.launcher (com.android.launcher/com.android.launcher2.Launcher) Motivo: ingresso dispacciamento timeout (attesa perché nessuna finestra è attiva ma non v'è un applicazione mirata che possono eventualmente aggiungere una finestra quando finiture messa in funzione.)
si noti che l'ANR si sta verificando in com.android.launcher (non nel mio app).
Btw, NON sto facendo un'operazione costosa nei miei metodi onBackPressed/onPause/onStop.
I registri mostrano anche che onBackPressed() non viene richiamato quando si verifica l'ANR - un comportamento molto strano, come si può vedere qui:
## User starts Activity A from Android Launcher
D/Activity A: onResume()
D/Activity A: onClick(): start Activity B
D/Activity A: onPause()
D/Activity B: onResume()
## User taps system back key (and onBackPressed() launches Activity A)
D/Activity B: onBackPressed(): start Activity A
D/Activity B: onPause()
D/Activity A: onResume()
D/Activity A: onClick(): start Activity B
D/Activity A: onPause()
D/Activity B: onResume()
## User taps system back key (but onBackPressed() is not invoked. Instead an ANR occurs)
I/InputDispatcher( 557): ANR in com.android.launcher
D/Activity B: onPause()
Ecco il mio metodo onBackPressed():
public void onBackPressed() {
Intent intentStartRoot = new Intent().setComponent(new ComponentName(this, ActivityHome.class));
intentStartRoot.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intentStartRoot);
}
pubblicare il tuo codice di onbackpress – Elltz
ho aggiunto il codice onBackPressed(). Buon suggerimento –