OnCreate flow geht nach fertig ()

Ich möchte eine Aktivität aus der onCreate Methode onCreate . Wenn ich finish() onDestroy() , wird onDestroy() nicht sofort aufgerufen, der Code fließt vorbei am finish() . onDestroy() wird erst nach dem onCreate() Schließen der Klammer aufgerufen.

Per the onCreate() Beschreibung bei developer.android.com/reference.

  • Wie klug ist Eclipse / ADT, wenn es um Android Library Projects geht?
  • Die Statusleiste wird weiß und zeigt keinen Inhalt dahinter
  • Packaging Handheld und tragbare Android App zusammen aus CLI
  • Wie Port Android-Anwendung auf iOS-Plattform?
  • Wie finde ich Element in einem Gridview in Android?
  • Kann Debugger für xamarin android Projekt nicht verwenden: System.IO.FileNotFoundException: Datei oder Assembly konnte nicht geladen werden Mono.Posix
  • Sie können innerhalb dieser Funktion das Finish () aufrufen. In diesem Fall wird onDestroy () sofort ohne den Rest des Aktivitätslebenszyklus (onStart (), onResume (), onPause (), etc.) aufgerufen.

    Grund ich frage ist: Ich möchte die Daten aus dem Bundle an onCreate() . Natürlich habe ich die Kontrolle über das, was an onCreate , aber ich denke immer noch, dass es bei der Auslieferung überprüft werden sollte.

    Mein Code enthält Klasse A , die Aktivität B beginnt. Ich glaube, die letzten beiden "außerhalb der if-Klausel" -Tags, sollte nicht aufgerufen werden, weil die finish Methode in der if Anweisung die Aktivität zerstört haben sollte. Es hat nichts mit der if-Klausel zu tun, da die Tag-Zeile nach dem zweiten finish() -Aufruf noch gelesen wird.

    Mein Code:

    Klasse a

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // goToBButton: when pressed sends message to class B. Button goToBButton = (Button)this.findViewById(R.id.go_to__b_btn); goToBButton.setOnClickListener(new OnClickListener() { @Override public void onClick (View v) { Log.i(TAG,"A Class: goToBButton, onClick"); Intent i = new Intent(A.this, B.class); startActivityForResult(i,REQ_TO_B); } }); } // end onCreate 

    Mein Code ClassB

      public class B extends Activity{ private static final String TAG = "tag"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layoutb); // set as true, should always print Tag: one line before first finish" if (true) { Log.i(TAG,"B Class: one line before 1st finish"); finish(); } // shouldn't get here after first finish Log.i(TAG,"B Class: outside of if clause, before second finish"); finish(); // shouldn't get here after second finish Log.i(TAG,"B Class: outside of if clause, after finish"); } // end onCreate @Override public void onStart () { super.onStart(); Log.i(TAG,"B Class: onStart"); } @Override public void onRestart() { super.onRestart(); Log.i(TAG,"B Class: onRestart"); } @Override public void onResume () { super.onResume(); Log.i(TAG,"B Class: onResume"); } @Override public void onPause () { super.onPause(); Log.i(TAG,"B Class: onPause"); } @Override public void onStop () { super.onStop(); Log.i(TAG,"B Class: onStop"); } @Override public void onDestroy () { super.onDestroy(); Log.i(TAG,"B Class: onDestroy"); } } // end B Class 

    Hier sind die Ergebnisse meiner Tags:

    11-26 15: 53: 40.456: INFO / tag (699): Eine Klasse: goToBButton, onClick

    11-26 15: 53: 40.636: INFO / tag (699): Eine Klasse: onPause

    11-26 15: 53: 40.865: INFO / tag (699): B Klasse: eine Zeile vor dem 1. Finish

    11-26 15: 53: 40.896: INFO / tag (699): B Klasse: außerhalb der if-Klausel, vor dem zweiten Finish

    11-26 15: 53: 40.917: INFO / tag (699): B Klasse: außerhalb der if-Klausel, nach Fertigstellung

    11-26 15: 53: 41.035: INFO / tag (699): Eine Klasse: onResume

    11-26 15: 53: 41.165: INFO / tag (699): B Klasse: onDestroy

  • Wie man die Farbe von TextinputLayout's Label und Edittext unterstreichen Android zu ändern
  • Android-Logcat: Senden von Protokolleinträgen vom Gerät per E-Mail
  • "Noinspection" Keyword-Liste in Android Studio
  • Android Espresso - Webbrowser
  • Audio-Streaming über TCP-Socket auf Android
  • Fehler: fehlgeschlagen, um Ziel mit Hash-String 'android-14' zu finden: Öffnen Sie Android SDK Manager
  • 2 Solutions collect form web for “OnCreate flow geht nach fertig ()”

    Ich vermute, dass es ist, weil finish () nicht dazu führt, dass die onCreate-Methode zurückkehrt. Du könntest einfach nur hinzufügen

     finish(); return; 

    Oder benutze ein anderes

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layoutb); if(good data){ //do stuff }else{ finish(); } } 

    Es scheint wie finish() funktioniert nicht bis onCreate() Rückkehr Kontrolle zu System. Bitte beziehen Sie sich auf diesen Beitrag: über Finish () in android . Sie müssen dieses Problem berücksichtigen, wenn Sie nicht möchten, dass jeder Ihrer Code nach dem Aufruf ausgeführt wird.

    Ich hoffe es hilft.

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