2014-04-07 9 views
13

Mam bardzo mylący problem. Zrobiłem pakiet APK z ostateczną wersją aplikacji, przesłałem go do Sklepu Play i zainstalowałem na moim urządzeniu testowym. Podczas instalacji w ten sposób aplikacja wykazuje różne zachowanie trybu uruchamiania.Kompilacja Androida w sklepie zachowuje się inaczej niż apk zainstalowany przez USB

Moje wygenerowane pliki APK są efektem budowy Gradle'a, choć zarówno Proguard, jak i Zipalign. Dla ułatwienia wyjaśnij, że moja aplikacja jest aplikacją typu pulpit nawigacyjny, której głównym działaniem jest przycisk uruchamiania dla działania B. Pobrałem ten pakiet APK wersji i zainstalowałem go na moim urządzeniu za pomocą "instalacji adb" USB, więc porównuję dokładnie ten sam pakiet APK z dwoma różnymi metodami instalacji.

Metoda USB: Gdy użytkownik kliknie przycisk w głównym działaniu, aby rozpocząć działanie B, aktywny B zostanie uruchomiony i wyświetlony na ekranie. Jeśli użytkownik kliknie przycisk home (otrzyma połączenie itp.), A następnie wróci do aplikacji, aktywność B będzie nadal wyświetlana. Jest to pożądane zachowanie (OCZEKIWANE).

Metoda sklepu: Pobieranie pliku APK ze sklepu i ponowne instalowanie/uruchamianie pokazuje główną czynność. Po kliknięciu przycisku Aktywność B jest ponownie uruchamiana. Teraz, gdy użytkownik trafi do domu i wróci, tylny stos zostaje najwyraźniej wyczyszczony i ponownie wyświetlana jest główna aktywność.

Nie określam żadnych specjalnych trybów uruchamiania w manifeście, więc wszystkie czynności są standardowe. W jaki sposób metoda instalacji może wpływać na takie rzeczy? To doprowadza mnie do szału. Czy ktokolwiek ma pojęcie, dlaczego tak się dzieje?

+0

tylko przypuszczenie, ale pan pcha zwalniania lub debugowania wersję z adb? – motoku

+0

wersja wydania, ta sama wersja Przesyłam do Play smutno:/ –

+0

OK, czy upewniłeś się, że nie przywracasz aplikacji w jednej instancji, a nie drugiej? – motoku

Odpowiedz

0

Miałem ten sam problem i to działało dla mnie. Jawnie ustawiono launchMode w elemencie aktywności Manifest.

android:launchMode="singleTop" 

„Jeżeli wystąpienie działania istnieje już na początku zadania docelowego trasy układu zamiarem tym przypadku za pośrednictwem wywołania sposobu jego onNewIntent(), zamiast tworzyć nową instancję działalności. "

Zobacz więcej opcji dokumentacji i wyjaśnienie: http://developer.android.com/guide/topics/manifest/activity-element.html

+0

Mam również do czynienia z tym samym problemem, do którego działania powinienem zastosować ten tryb uruchamiania i co powinienem obsłużyć w nowej metodzie intencji –

Powiązane problemy