Как очистить стек назад для укоренения действия, когда пользователь оставляет приложение?

У меня есть приложение с 2 операциями, LogonAct и MainAct. LogonAct является действием входа в систему, которое я хочу вынудить пользователя пройти каждый раз, когда они возвращаются к приложению. Я установил android:clearTaskOnLaunch = "верный" на LogonAct.

Когда я сначала запускаю приложение, я прохожу эту последовательность экранов,

Home -> LogonAct -> MainAct -> Home

Я тогда следую за этой последовательностью,

LogonAct -> Back -> MainAct

Почему это возвращает меня MainAct? Не был должен тот приют действия, закрытый, так как LogonAct имеет android:clearTaskOnLaunch = "верный". Я ожидал быть возвращенным для Размещения, когда я нажал Кнопку "Назад" от LogonAct.

Соответствующие отрывки из AndroidManifest.xml,

   <activity android:name=".LogonAct"
             android:clearTaskOnLaunch="true">
       <intent-filter>
           <action android:name="android.intent.action.MAIN"/>
           <category android:name="android.intent.category.LAUNCHER"/>
       </intent-filter>
   </activity>

   <activity android:name=".MainAct">
       <meta-data android:name="android.app.default_searchable"
                  android:value=".SearchResults" />
   </activity>

Я использую 1.5.

Любая справка ценится.

15
задан Adrian 25 January 2010 в 23:09
поделиться

1 ответ

Документы для Android: ClearTaskonlaunch Укажите, что этот атрибут применяется «всякий раз, когда [действие] повторно запускается с домашнего экрана».

Однако в вашем случае вы нажимаете кнопку Home , чтобы вернуться на главный экран, а не нажав кнопку обратно . Это означает, что ваше приложение на самом деле не Relewared , потому что MINACT не был «закончен». Это происходит только при нажатии обратно (или если Android убивает задачу для экономии ресурсов и т. Д.).

Поскольку у вас есть только две действия в вашем приложении, вы можете установить атрибут Android: NOHISTORY на MINACT , что гарантирует, что пользователи никогда не могут вернуться к нему и должны пройти через Логонакт .

Кроме того, кажется, что он немного раздражает заставлять пользователей повторно войти каждый раз, когда они переходят в приложение (например, когда они получают телефонный звонок).
Вы можете сохранить токен сеанса с тайм-аутом в постоянном хранении вашего приложения, или удерживайте сетевое соединение, открытое, используя сервис, если это работает ваше приложение - но, конечно, это зависит от вас и вашим требованиям. :)

11
ответ дан 1 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: