Вот мой сценарий: у меня есть серия Activity
. Я установил таймаут для тех Activity
, которые отключат пользователя в случае, если он на мгновение станет неактивным. Но я хочу перенаправить пользователя на его последний экран в случае, если он лог
Когда я отключаю пользователя, я звоню так:
public void restartFromLoginActivity(boolean saveCurrentState, String previousLoggedUserId) {
Activity currentActivity = getCurrentActivity();
Intent intent = new Intent(CERHISApplication.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
if(saveCurrentState && currentActivity != null){
Bundle extras = new Bundle();
extras.putString(ApplicationController.KEY_PREVIOUSLY_LOGGED_USER_ID, previousLoggedUserId);
intent.putExtras(extras);
currentActivity.startActivityForResult(intent, ApplicationController.RC_LOGIN);
}
else
startActivity(intent);
if(currentActivity != null)
currentActivity.finish();
}
И в моем LoginActivity
я проверяю, совпадает ли userId, если это так, я пытаюсь вызвать перенаправление пользователя через onActivityResult
следующим образом:
if (getCallingActivity() != null && userId.equals(previouslyLoggedUserId))
setResult(RESULT_OK);
else
ApplicationController.startHomeActivity(this);
Но это не работает, потому что я установил флаг FLAG_ACTIVITY_NEW_TASK
для своего намерения. Как сказано в документации:
Этот флаг нельзя использовать, когда вызывающая сторона запрашивает результат от запускаемого действия.
Что я понимаю, Activity
может получать результаты только от Activity
из задачи. Но мне нужно установить этот флаг, иначе пользователь сможет вернуться в Activity stack
, нажав кнопку возврата.
Есть ли какой-нибудь обходной путь, позволяющий объединить очистку стека, чтобы пользователь не мог вернуться к действиям перед повторным входом в систему, и поведение redirect , которое я хотел бы представить?
Любая идея приветствуется, спасибо.