Android: die aktive Aktivität wiederherstellen, während die Anwendung wieder aufzunehmen

StackOverflow https://stackoverflow.com/questions/724419

  •  05-09-2019
  •  | 
  •  

Frage

Ich habe zwei Tätigkeiten ausgeführt werden: mainActivity und childActivity . Jedes Mal, wenn der Benutzer in der Schaltfläche klickt in mainActivity , die childActivity wird gestartet. Was ich tun möchte, ist dies:

Wenn die aktive Tätigkeit ist die childActivity und der Benutzer klickt der Home-Taste dann die Anwendung neu starten , ich möchte, dass die childActivity statt mainActivity , die gestartet wird.

Ich hatte einige Vorschläge tatsächlich Arounds arbeiten. Ich habe versucht, onStart, onRestart, onResume, OnStop, onDestroy Ereignisse zu manipulieren. Aber sie haben lösen das Problem nicht vollständig. Es sollte dort eine intelligente Art und Weise sein. Danke.

Edit:

Vielen Dank für die Antwort, Soonil. Der Fall, daß Sie geschieht, wenn die Aktivität aus den jüngsten Aktivitäten Fenster aufgerufen wird. (Das Fenster geöffnet, wenn Sie lange drücken Sie die Home-Taste) jedoch; Dies geschieht nicht, wenn Sie es von zu Hause Bildschirm öffnen. (Wie Öffnung von Anfang) Ich glaube nicht, mein Code ein bestimmtes Problem hat, diesen Fehler zu erzeugen. Da habe ich ein Testprojekt und versuchte Standalone vor, die Frage zu senden und vor dem gleichen Problem. Wie auch immer, hier ist der Testcode:

public class MainActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("MainActivity");

        ((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        startActivity(new Intent(this, ChildActivity.class));
    }

}

public class ChildActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        this.setTitle("ChildActivity");

    }
}
War es hilfreich?

Lösung

Bearbeiten : Fand die Lösung für Ihr Problem etwas zufällig heute! Sehen Sie diese Fehlerreport rel="nofollow. Es erklärt das Problem genau. Der Grund, warum ich nicht das Problem reproduzieren könnte, ist Ich habe nie von Eclipse direkt eine App starten. Ich benutze Eclipse-die App zu installieren und sie dann selbst starten.


Dies ist bereits das Standardverhalten für Android-Anwendungen sind keine speziellen Tricks erforderlich, um dies zu erreichen. Ich bin überrascht, Ihre Anwendung ist dieses Verhalten nicht zeigen. Jede Android-Anwendung verwaltet eine Aktivität Stapel, buchstäblich einen LIFO-Stapel von Aktivitäten. Diese Aktivitäten können weiter in Aufgaben gruppiert werden, aber 99% der weltlichen Anwendungen wird nicht immer brauchen, um etwas über Aufgaben in meiner Erfahrung kennen.

Wenn Sie die Home-Taste drücken, wird der gesamte Anwendungsstapel in den Hintergrund gestellt. Während im Hintergrund, kann es für die Speicher Bedenken jederzeit getötet werden, aber vergeht nicht viel Zeit, wenn, bevor er wiederhergestellt wird, wird es in der Regel nicht getötet und muss nicht neu erstellt werden. Wenn Sie die Anwendung erneut aus, um den Stapel (oder genauer gesagt, nur das oberste Element auf dem Stapel) gestellt wird.

Wenn Ihre Anwendung nicht dieses Verhalten zeigen, ich vermute, dass es etwas mit dem zu tun hat, wie Sie die mainActivity beginnen und childActivity und alle zusätzlichen Intent Flags Sie können unter Verwendung werden. Jede Chance, können Sie Code-Schnipsel schreiben, wie Sie beginnen, die mainActivity und childActivity?

Andere Tipps

Ich ging zurück und mit einer ähnlichen Anwendung getestet, und selbst wenn der Prozess aus dem Speicher gezwungen wird, der ChildActivity wird gestellt automatisch als Soonil sagt. Werden Sie diese auf dem Emulator oder auf einem Gerät zu sehen?

Wenn Sie Ihre App und beobachten logcat ausführen, sollten Sie so etwas wie die folgende sehen, nachdem Sie Ihre App starten, dann die ChildActivity öffnen und klicken Sie auf Start und dann Ihre Aktivitäten starten wieder:

Starten Aktivität: Intent {action = android.intent.action.MAIN Kategorien = {android.intent.categroy.LAUNCHER} flags = ... comp = {com.yourpackagename.MainActivity}} Starten Sie proc für die Aktivität yourpackagename.ChildActivity: pid = x uid = y gids = {} Angezeigte Aktivität /.ChildActivity

Könnten Sie die Ausgabe von logcat posten, wenn Sie das Verhalten nicht sehen Sie erwarten?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top