Informacja: Moje urządzenie to Nexus One z 2.2 i przetestowałem dwa projekty: jeden na 1,5 i jeden na 2.1.Problemy z wykryciem cyklu życia ekranu podczas wyświetlania ekranu:
Problem: rozumiem cykl życia aplikacji po wyłączeniu i włączeniu ekranu.
Oto moje wyjście
// 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 ...
Jestem całkowicie zdezorientowany. Po co ponownie uruchamiać aktywność po uruchomieniu ekranu? I dlaczego zatrzymać i ponownie go uruchomić, gdy ekran był już włączony i usunięto tylko blokadę?
Aby upewnić się, że nie zrobiłem nic złego, stworzyłem nowy projekt z tylko tą aktywnością. Wyjście jest identyczne ...
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 ...");
}
}
Czy ktoś ma pomysł?
Aktualizacja od dzisiaj (nie rozumiem, dlaczego nie zachowuje się jak ostatni raz, może więcej wolnych zasobów?)
// 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
Co jest dziwne, że widzę naDestroy(), onStart(), onResume(), ale nie widzę żadnych połączeń onCreate(). Jestem również zainteresowany zrozumieniem zachowania. –
To dlatego, że moje narzędzie onCreate nieodebrane w dzienniku ... Również wypróbowałem to jeszcze raz ... teraz moja gra ma to samo zachowanie, ale testproject ma oczekiwane zachowanie (zobacz aktualizację) – WarrenFaith