Probleme beim Verständnis des Lebenszyklus, wenn der Bildschirm ab- und eingeschaltet wird

Information: Mein Gerät ist ein Nexus One mit 2.2 und ich habe zwei Projekte getestet, eins auf 1.5 und eins auf 2.1.

Problem: Ich habe Schwierigkeiten, den Lebenszyklus meiner Anwendung zu verstehen, wenn der Bildschirm aus- und eingeschaltet ist.

  • Mehrere Seiten zur gleichen Zeit auf einem ViewPager
  • Binding Library Mono für Android
  • AndEngine RenderTexture Ausnahme: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
  • Warum der Konstruktor ArrayAdapter <String> (neu View.OnKeyListener () {}, int, String ) ist undefiniert
  • Wie benutzt man Android Support typedef Annotationen in kotlin?
  • Verwenden Sie RxJava und Retrofit, um durch die Liste zu iterieren und die Ergebnisse auf der Grundlage von Unterabfragen zu erhöhen
  • Hier ist meine Ausgabe

    // 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 ... 

    Ich bin total verwirrt. Warum die Aktivität neu starten, wenn der Bildschirm ausgeschaltet ist? Und warum stoppen und neu starten es wieder, wenn der Bildschirm war bereits auf und nur das Schloss wurde entfernt?

    Um sicherzustellen, dass ich nichts falsch gemacht habe, habe ich mit dieser Aktivität ein neues Projekt erstellt. Die Ausgabe ist identisch …

     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 ..."); } } 

    Hat jemand eine Idee?

    Update von heute (verstehe nicht, warum es sich nicht wie letztes Mal verhält, vielleicht mehr freie Ressourcen?)

     // 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 

  • Was ist die Verwendung von <permission-group> in android?
  • Mit VideoView für Streaming oder Progressive-Download-Video
  • Wie kann man paired bluetooth Gerät programmgesteuert auf Android verbannen oder löschen?
  • Wie ignoriere ich komplette Ordner für Flusenüberprüfung mit Gradle?
  • Soll ich den bluetooth reflexionshack in produktionscode verlassen?
  • Android: Etwas besser als Android: Ellipse = "Ende", um "..." zu verkürzten langen Strings hinzuzufügen?
  • 4 Solutions collect form web for “Probleme beim Verständnis des Lebenszyklus, wenn der Bildschirm ab- und eingeschaltet wird”

    Siehe Aktivität Lifecycle Dokumentation für eine gute Beschreibung des Lebenszyklus, mit Diagrammen.

    Wahrscheinlich wird deine Aktivität mit dem Bildschirm getötet, um Ressourcen zu sparen (Batterieleistung). Wie die Dokumentation sagt, können Sie im Grunde getötet werden, wenn Android will Ressourcen zu befreien. Also solltest du deine Aktivitäten immer so gestalten, dass sie jederzeit gestoppt und neu gestartet werden können.

    Ich hatte das gleiche Problem mit meinem eigenen Spiel. Mein Spiel funktioniert nur in der Landschaft, und beim Ausschalten des Bildschirms nimmt der Android-Bildschirmschoner die Kontrolle (im Hochformat) und sendet so eine Orientierung, die die Aktivität zerstört und neu erstellt.

    Eine einfache Lösung ist es, zu erklären, dass Sie sich selbst verwalten.

     <activity ... android:configChanges="orientation" ... > 

    Das ist ganz einfach, wenn deine Aktivität nur zur Landschaft erklärt wird (man muss nichts machen), kann aber härter werden, wenn deine Aktivität sich drehen kann …

    Rubens Antwort ist völlig richtig, aber nur, wenn deine Anwendung auf die API Level 12 oder niedriger gerichtet ist .

    Aber da die API-Ebene 13 zusätzlich zur orientation die screenSize Option deklarieren screenSize , da sie auch ausgelöst wird, wenn ein Gerät zwischen dem Portrait und den screenSize umschaltet:

     <activity ... android:configChanges="orientation|screenSize" ... > 

    Andernfalls würde Ihre Aktivität immer noch eine zusätzliche Zeit, wenn der Bildschirm geht auf der API 13 oder eine höhere Plattform neu erstellt werden.

    Als Referenz siehe API-Dokumente , android:configChanges Abschnitt Notizen.

    Das ist der Weg. Wenn du den Aktivitätslebenszyklus liest, wirst du sehen, dass die Stufen so ziemlich so geordnet sind. Es ist nicht nur, wenn Ihr Bildschirm geht und aus, aber auch, wenn Sie chnage die oreintation des Telefons. Android hat die Aktivität nach genau den Schritten, die Sie oben erwähnt haben, neu erstellt. Versuchen Sie, den Bildschirm zu drehen, sehen Sie dann! =)

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.