Android build in store ведет себя иначе, чем apk, установленный через USB
У меня очень запутанная проблема. Я создал окончательный выпуск APK моего приложения, отправил его в Play Store и установил на своем тестовом устройстве. Приложение имеет разные режимы запуска, когда я устанавливаю его таким образом.
Мой сгенерированный APK является продуктом сборки Gradle, хотя и Proguard, и zipalign. Для простоты объяснения, скажем, мое приложение представляет собой приложение типа панели инструментов, основное действие которого показывает кнопку запуска для активности B. Я взял этот выпуск APK и установил его на свое устройство через USB 'adb install', поэтому я сравниваю точный APK с двумя различными способами установки.
Метод USB:. Когда пользователь нажимает кнопку в основной операции для запуска Activity B, запускается Activity B и отображается на экране. Если пользователь нажимает кнопку "домой" (получает вызов и т.д.), А затем возвращается в приложение, активность B все еще отображается. Это желаемое (И ОЖИДАЕМОЕ) поведение.
Метод сохранения: Загрузка APK из магазина и установка/запуск снова показывают основное действие. Когда кнопка нажата, снова активируется действие B. Теперь, когда пользователь удаляется домой и возвращается, задний стек, по-видимому, очищается, и основное действие отображается снова.
Я не указываю какие-либо специальные режимы запуска в манифесте, поэтому все действия являются стандартными. Как метод установки может повлиять на такую вещь!? Это сводит меня с ума. Кто-нибудь знает, почему это может произойти?
Ответы
Ответ 1
У меня была такая же проблема, и это сработало для меня. Явно задайте startMode в элементе активности манифеста.
android:launchMode="singleTop"
"Если экземпляр действия уже существует в верхней части целевой задачи, система перенаправляет намерение на этот экземпляр посредством вызова его метода onNewIntent() вместо создания нового экземпляра действия."
Подробнее см. документацию и пояснения:
http://developer.android.com/guide/topics/manifest/activity-element.html