Domanda

Ho due attività in esecuzione: mainActivity e childActivity . Ogni volta che l'utente fa clic sul pulsante in mainActivity , childActivity è lanciato. Quello che voglio fare è questo:

Quando l'attività attivo è il childActivity e l'utente fa clic sul pulsante casa poi rilanciare l'applicazione , voglio vedere la childActivity < strong> anziché mainActivity che viene lanciato.

Ho avuto alcuni suggerimenti realmente funzionano around. Ho cercato di manipolare onStart, onRestart, onResume, onStop, eventi OnDestroy. Ma, essi non risolvono completamente il problema. Ci dovrebbe essere un modo intelligente là fuori. Grazie.

Modifica:

Grazie per la risposta, Soonil. Il caso in cui si dice che accade quando l'attività viene chiamato dalla finestra attività recenti. (La finestra aperta quando si premere a lungo il tasto home) Tuttavia; Questo non sta accadendo quando si apre dalla schermata iniziale. (Come l'apertura dall'inizio) non credo che il mio codice ha un problema specifico per generare questo errore. Perché, ho creato un progetto di test e ho cercato autonomo prima di inviare la questione e di fronte lo stesso problema. In ogni caso, ecco il codice di prova:

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

    }
}
È stato utile?

Soluzione

Modifica : trovato la soluzione al vostro problema un po 'a caso oggi! Vedere questo rapporto di errore . Si spiega esattamente il tuo problema. La ragione per cui non ho potuto riprodurre il problema è che non ho mai avuto Eclipse lanciare direttamente un app. Io uso Eclipse per installare l'applicazione e quindi avviare da solo.


Questo è già il comportamento predefinito per le applicazioni Android, senza trucchi speciali sono necessari per raggiungere questo obiettivo. Mi sorprende che l'applicazione non sta dimostrando questo comportamento. Ogni applicazione Android mantiene uno stack di attività, letteralmente una pila LIFO di attività. Queste attività possono essere ulteriormente raggruppati in attività, ma il 99% delle applicazioni banali non sarà mai bisogno di sapere nulla di compiti nella mia esperienza.

Quando si preme il tasto home, l'intero stack applicativo viene messo in secondo piano. Mentre sullo sfondo, può essere ucciso per le preoccupazioni di memoria in qualsiasi momento, ma se non molto tempo trascorre prima che venga ripristinato, in genere non viene ucciso e non deve essere ricreato. Quando si seleziona l'applicazione di nuovo, la pila (o, più precisamente, solo l'elemento in cima allo stack) viene ripristinato.

Se l'applicazione non espone questo comportamento, ho il sospetto che abbia qualcosa a che fare con quanto si sta avviando il mainActivity e childActivity ed eventuali bandiere Intent in più che si sta utilizzando. C'è qualche possibilità di poter postare i frammenti di codice su come si sta avviando il mainActivity e childActivity?

Altri suggerimenti

Sono tornato e testato con un'applicazione simile, e anche quando il processo è costretto a lasciare la memoria del ChildActivity si ricostituisce automaticamente come dice Soonil. Stai vedendo questo sull'emulatore o su un dispositivo reale?

Se si esegue la vostra applicazione e guardare logcat, si dovrebbe vedere qualcosa di simile a quanto segue dopo aver lanciare la vostra applicazione, quindi aprire il ChildActivity e fare clic su casa e poi lanciare di nuovo la vostra attività:

attività di inizio: Intent {action = android.intent.action.MAIN categorie = {} android.intent.categroy.LAUNCHER flags = ... comp = {}} com.yourpackagename.MainActivity Inizia proc per l'attività yourpackagename.ChildActivity: pid = x uid = y GID = {} Mostrato attività /.ChildActivity

Potrebbe inviare l'output di logcat quando non si vede il comportamento che ci si aspetta?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top