Sto tentando di implementare il comportamento descritto here, in cui una notifica (o qualsiasi altra cosa) avvia un'attività "interna" nella tua app, e quindi quando l'utente lo ha premuto torna a la mia attività "casa".Torna all'attività principale dell'attività creata dalla notifica
La documentazione Android dicono
Nel caso del pulsante Indietro, si dovrebbe rendere la navigazione più prevedibile inserendo nella schiena del compito pila completa verso l'alto il percorso di navigazione a schermo più alta dell'app. Ciò consente agli utenti di dimenticare come sono entrati nella tua app per passare allo schermo più in alto dell'app prima di uscire.
C'è un buon modo per farlo davvero? Altre domande su Stackoverflow suggeriscono di avviare l'attività principale con un intento che dice di avviare l'attività interna, ma che sembra un enorme hack, che dubito in qualche modo che Google avrebbe usato in Gmail, e presumo che ci sia un metodo decente, dato che stanno sostenendo il comportamento.
Quindi c'è un modo non hacky per fare questo?
Purtroppo, questo non sembra funzionare per me. La mia MainActivity viene effettivamente spinta nuovamente nello stack di navigazione, e funziona solo una volta per una notifica (non li auto-licenzia). Qualche idea? – bompf
@bompf, probabilmente a causa di 'PendingIntent.FLAG_ONE_SHOT' utilizzato in' PendingIntent.getActivities'. Suggerisco invece 'PendingIntent.FLAG_CANCEL_CURRENT'. – Sam
Grazie; questo ha funzionato per me, mentre 'TaskStackBuilder' non sembrava funzionare. Tuttavia, il codice ha provocato una condizione strana: se avessi aperto "MainActivity" tramite il programma di avvio e poi avessi aperto l'azione dalla notifica, dopo aver premuto il pulsante Indietro per tornare a "MainActivity", premendo il pulsante Indietro si è arrivati a 'MainActivity' di nuovo. In questo modo: '[MainActivity] [MainActivity] [ConversationActivity]'. L'ho risolto cambiando la seconda riga di codice in 'backIntent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK)'. – Sam