2014-04-07 13 views
13

Ho un problema molto confuso. Ho creato un APK di rilascio finale della mia app, l'ho inviato al Play Store e installato sul mio dispositivo di test. L'applicazione presenta un comportamento di modalità di avvio diverso quando lo installo in questo modo.Android build in store si comporta in modo diverso rispetto a apk installato tramite USB

Il mio APK generato è il prodotto di una build Gradle eseguita con Proguard e zipalign. Per semplicità di spiegazioni, la mia app è un'app tipo dashboard la cui attività principale mostra un pulsante di avvio dell'attività B. Ho preso questo APK del rilascio e l'ho installato sul dispositivo tramite USB 'adb install', quindi sto confrontando lo stesso APK con due diversi metodi di installazione.

Metodo USB: Quando un utente fa clic sul pulsante nell'attività principale per avviare Attività B, l'attività B viene avviata e viene visualizzata sullo schermo. Se l'utente preme il pulsante home (riceve una chiamata, ecc.) Quindi torna all'app, l'attività B continua a essere visualizzata. Questo è il comportamento desiderato (AND EXPECTED).

Metodo di archiviazione: Il download dell'APK dallo store e l'installazione/avvio di nuovo mostrano l'attività principale. Quando si fa clic sul pulsante, viene nuovamente avviata l'attività B. Ora, quando l'utente torna a casa e ritorna, il back stack apparentemente viene cancellato e viene mostrata di nuovo l'attività principale.

Non specifica alcuna modalità di avvio speciale nel file manifest, quindi tutte le attività sono standard. Come può il metodo di installazione influenzare una cosa del genere !? Questo mi sta facendo impazzire. Qualcuno ha qualche idea del perché questo potrebbe accadere?

+0

Solo una supposizione, ma stai spingendo una versione di rilascio o di debug con adb? – motoku

+0

versione di rilascio, stessa versione che sto caricando per giocare tristemente:/ –

+0

OK, ti sei assicurato che non stai ripristinando l'applicazione in un'istanza e non l'altra? – motoku

risposta

0

Ho avuto lo stesso problema e questo ha funzionato per me. Impostare esplicitamente la modalità di avvio nell'elemento dell'attività del manifesto.

android:launchMode="singleTop" 

"Se un'istanza dell'attività esiste già nella parte superiore del compito bersaglio, il sistema instrada l'intento di tale istanza tramite una chiamata al suo metodo onNewIntent(), anziché creare una nuova istanza dell'attività. "

vedere la documentazione per più opzioni e una spiegazione: http://developer.android.com/guide/topics/manifest/activity-element.html

+0

Ho anche affrontato lo stesso problema a cui attività dovrei applicare questa modalità di avvio e cosa dovrei gestire nel metodo del nuovo intento –

Problemi correlati