Informazioni: Il mio dispositivo è un Nexus One con 2.2 e ho testato due progetti, uno su 1.5 e uno su 2.1.Problemi di comprensione del ciclo di vita quando lo schermo si spegne e si accende
Problema: Ho problemi a capire il ciclo di vita della mia applicazione quando lo schermo è spento e acceso.
Qui è la mia uscita
// activity starts
08-04 17:24:17.643: ERROR/PlayActivity(6215): onStart executes ...
08-04 17:24:17.643: ERROR/PlayActivity(6215): onResume executes ...
// screen goes off
08-04 17:24:28.943: ERROR/PlayActivity(6215): onPause executes ...
08-04 17:24:32.113: ERROR/PlayActivity(6215): onStop executes ...
08-04 17:24:32.113: ERROR/PlayActivity(6215): onDestroy executes ...
08-04 17:24:32.983: ERROR/PlayActivity(6215): onStart executes ...
08-04 17:24:32.983: ERROR/PlayActivity(6215): onResume executes ...
08-04 17:24:32.983: ERROR/PlayActivity(6215): onPause executes ...
// screen goes on
08-04 17:24:47.683: ERROR/PlayActivity(6215): onResume executes ...
// lock removed
08-04 17:24:56.943: ERROR/PlayActivity(6215): onPause executes ...
08-04 17:24:59.663: ERROR/PlayActivity(6215): onStop executes ...
08-04 17:24:59.663: ERROR/PlayActivity(6215): onDestroy executes ...
08-04 17:25:00.943: ERROR/PlayActivity(6215): onStart executes ...
08-04 17:25:00.943: ERROR/PlayActivity(6215): onResume executes ...
Sono totalmente confuso. Perché riavviare l'attività quando lo schermo si spegne? E perché fermarsi e riavviarlo di nuovo quando lo schermo era già acceso e solo il lucchetto è stato rimosso?
Per essere sicuro di non aver fatto nulla di male, ho creato un nuovo progetto con solo questa attività. L'uscita è identicamente ...
public class LifeCycleTest extends Activity {
private final static String DEBUG_TAG = "FirstLifeLog";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(DEBUG_TAG, "onCreate executes ...");
setContentView(R.layout.main);
}
protected void onRestart() {
super.onRestart();
Log.e(DEBUG_TAG, "onRestart executes ...");
}
protected void onStart() {
super.onStart();
Log.e(DEBUG_TAG, "onStart executes ...");
}
protected void onResume() {
super.onResume();
Log.e(DEBUG_TAG, "onResume executes ...");
}
protected void onPause() {
super.onPause();
Log.e(DEBUG_TAG, "onPause executes ...");
}
protected void onStop() {
super.onStop();
Log.e(DEBUG_TAG, "onStop executes ...");
}
protected void onDestroy() {
super.onDestroy();
Log.e(DEBUG_TAG, "onDestroy executes ...");
}
}
Qualcuno ha un'idea?
Aggiornamento da oggi (non capisco perché non si comporta come l'ultima volta, forse più risorse libere?)
// activity starts
08-09 12:14:03.122: ERROR/FirstLifeLog(15406): onCreate executes ...
08-09 12:14:03.132: ERROR/FirstLifeLog(15406): onStart executes ...
08-09 12:14:03.132: ERROR/FirstLifeLog(15406): onResume executes ...
// screen off
08-09 12:14:07.412: ERROR/FirstLifeLog(15406): onPause executes ...
// screen on
08-09 12:14:11.722: ERROR/FirstLifeLog(15406): onResume executes ...
// no log for removed screen lock
Che è strano è che io vedo OnDestroy() onStart(), chiamate, onResume() ma non vedo alcun onCreate() chiama. Sono anche interessato a capire il comportamento. –
Questo perché il mio onCreate ha mancato l'istruzione del registro ... Anche io l'ho provato di nuovo oggi ... ora il mio gioco ha lo stesso comportamento, ma il testproject ha il comportamento previsto (vedi l'aggiornamento) – WarrenFaith