Должен ли я использовать FLAG_ACTIVITY_CLEAR_TOP в этом случае? - PullRequest
0 голосов
/ 04 июня 2019

В моем приложении есть следующий поток Activity: LoginActivity> DashboardActivity> (если пользователь решит сменить пароль)> ChangePasswordActivity

Если пользователь успешно сменит свой пароль,Я хотел бы отослать их обратно к самому первому занятию, которое LoginActivity.Я хотел бы pop DashboardActivity в процессе предотвращения любых нежелательных затяжных действий.

Правильно ли использовать FLAG_ACTIVITY_CLEAR_TOP для запуска нового LoginActivity в этом случае?Я хотел бы знать, какие флаги подходят в этом сценарии.

Что бы это ни стоило, мой DashboardActivity имеет launchMode, установленный в singleTop в моем AndroidManifest.

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

LoginActivity> DashboardActivity> (если пользователь решает сменить пароль)> ChangePasswordActivity

  • Для очистки задачи и намерения для LoginActivty следует использовать

    intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Правильно ли использовать FLAG_ACTIVITY_CLEAR_TOP для запуска нового входа в систему?Я хотел бы знать, какие флаги уместны в этом

  • FLAG_ACTIVITY_CLEAR_TOP очистит все из стека и сделает новое действие в качестве корневой задачи.В вашем случае предыдущей активности для LoginActivity нет, она также будет работать, но не рекомендуется.

Для чего бы то ни было, у моего DashboardActivity для моего свойства запуска установлено значение singleTop в моем AndroidManifest.

0 голосов
/ 04 июня 2019

Если вы хотите просто удалить предыдущие действия из стека и запустите вход в систему просто сделайте это

в manifest файле ваша учетная запись должна быть такой

<activity
    android:name=".LoginActivity"
    android:screenOrientation="portrait"/>

После смены пароля запустите логин activity со следующими тегами

Intent intent = new Intent(ChangePassword.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();

Установив флаг Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK все предыдущие действия будут удалены из стека.

для получения дополнительной информации проверьте это https://developer.android.com/reference/android/content/Intent Из официальной документации - FLAG_ACTIVITY_CLEAR_TOP

Если установлено, и запускаемое действие уже выполняется в текущей задачи, а затем вместо запуска нового экземпляра этого деятельность, все остальные виды деятельности будут закрыты и это намерение будет доставлено (теперь на вершине) старой деятельности как новое намерение.

Например, рассмотрим задачу, состоящую из действий: A, B, C, D. Если D вызывает startActivity () с намерением, которое разрешается в компонент деятельности B, то C и D будут завершены, и B получит заданное намерение, в результате чего стек теперь равен: A, B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...