2010-05-26 4 views
9

Ho le attività A e B. L'A è quello con il filtro di intenti LAUNCHER (ovvero l'attività che viene avviata quando si fa clic sull'icona dell'app nella schermata iniziale).Android: come far sì che il programma di avvio apri sempre l'attività principale anziché l'attività figlio? (o altrimenti)

A lancia B utilizzando startActivity(new Intent(A.this, B.class)).

Quando l'utente ha l'attività B aperta, e poi mettere la mia domanda in secondo piano, e poi processo di mia applicazione viene ucciso, quando l'utente avvia di nuovo la mia domanda, B si apre invece di A.

Questo ha causato una chiusura forzata nella mia app, perché A è l'attività che inizializza le risorse necessarie alla mia app e quando B ha provato ad accedere alle risorse non inizializzate, B si blocca.

Avete qualche suggerimento cosa dovrei fare in questa situazione?

risposta

10

Beh, dovresti davvero avere l'attività B anche inizializzare le tue risorse. Ma puoi inserire android:clearTaskOnLaunch="true" nel tuo manifest per l'attività A per fare in modo che il programma di avvio vada sempre su quell'attività.

+0

Apparentemente non esegue il lavoro in modo apparente. Ho finito per avviare altre mie attività con: intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY); – Warpzit

0

Hai provato a impostare Flag FLAG_ACTIVITY_NEW_TASK durante la creazione di intent. Nel tuo caso prova startActivity(new Intent(A.this, B.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK))

+0

Scusa, ma sarebbe così gentile da spiegare cosa intendi per A.questo, B.class? Quale sarebbe la sintassi effettiva? B è normalmente espresso come "com.mypackage.FOO" (o qualunque cosa l'ho chiamato nel manifest), e A? Non sono nemmeno sicuro di cosa intendi per A. Ho provato ... nuovo Intent (questo, "com.mypackage.FOO" .getClass(). SetFlags ... ma ovviamente non ha funzionato (stavo solo provando –

+0

A. Questo si riferisce a questo nella tua dichiarazione B.Class si riferisce alla classe che vuoi invocare. getclass() restituirà la classe runtime di un oggetto, in questo caso penso che lo farò restituire la classe base – Vamsi