Domanda

Ho un'app che cerchi intorno all'attività principale (un menu principale). In ogni altra app c'è una voce di menu option che indirizza a questa attività.

All'inizio, ho sempre iniziato una nuova attività principale quando questo articolo è stato selezionato. Usando il pacchetto intento, ho detto l'attività principale che alcune inizializzazioni che faccio su un nuovo inizio non erano necessarie.

Tuttavia, non mi piaceva il comportamento generale. Mi sono imbattuto in android:launchMode="SingleTask" e questo sembrava aiutare: ora non ricreare la mia attività del menu principale tutto il tempo; Inoltre, se premo il pulsante "Indietro", torno direttamente alla schermata principale. Questo mi sento abbastanza bene come un menu "principale" appropriato.

Il mio problema ora è questo: se eseguo un'altra attività della mia app, premi il pulsante Home e quindi riaprire la mia app (ad esempio usando "Ultime app"), allora non torno all'ultima attività, ma al uno principale. L'altra attività è distrutta.

Qualche idea come posso implementare il comportamento di SingleTask senza solo essere in grado di tornare a un'attività?

È stato utile?

Soluzione

Se le altre tue attività sono dichiarate normalmente con le impostazioni predefinite di attività in Android, tornando alla tua app dovresti portarti alla stessa attività in cui hai lasciato (utilizzando il pulsante Hardware Home)

Tuttavia ricorda che il sistema Android uccide le applicazioni quando richiede risorse di sistema. Quindi la tua app potrebbe essere stata uccisa quando sei andato all'altra applicazione. Quindi, quando torni alla tua app, l'attività di avvio predefinita verrà riavviato, che è l'attività del menu.

Per tornare all'attività principale da qualsiasi attività, fallo:

public static void goHome(Context context) {
        final Intent intent = new Intent(context, HomeActivity.class); //give name of your main activity class here
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
    }
.

che cancellerà la pila di attività e ti riporta alla tua attività principale. Mentre dichiari Singletop, porterà l'attività principale esistente in primo piano. Flag Intent.FLAG_ACTIVITY_CLEAR_TOP rimuoverà tutte le attività nello stack in cima all'attività principale. (Assumendo che tu sia nella stessa applicazione).

Ora, tutte le altre attività devono includere un pulsante il cui click listener richiama il metodo goHome();

Dall'attività principale, se si preme il pulsante Indietro hardware, dovrebbe uscire dalla tua app.

Altri suggerimenti

Perché non chiamare la chiamata () sulle attività create dall'attività principale?In questo modo si ritorna all'attività principale, senza crearne uno nuovo ...

Penso che dovresti salvare lo stato di voi attività prima di iniziare un'altra attività, quindi riprendi la tua attività ogni volta che torni sull'ultima attività. Vedi Attività Ciclo di vita da Android http://developer.android.com/guide/topics/fincommentals/activities.html

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