onActivityResult и FLAG_ACTIVITY_NEW_TASK: обходной путь? - PullRequest
0 голосов
/ 03 июля 2018

Вот мой сценарий: у меня есть серия 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 , которое я хотел бы представить?

Любая идея приветствуется, спасибо.

...