onActivityResult 和 FLAG_ACTIVITY_NEW_TASK:解决方法?

MHo*_*gge 5 android activity-stack android-intent android-activity

这是我的场景:我有一系列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();
}
Run Code Online (Sandbox Code Playgroud)

在我的LoginActivity检查中,userId 是否相同,如果相同,我尝试通过onActivityResult如下方式调用重定向用户:

if (getCallingActivity() != null && userId.equals(previouslyLoggedUserId)) 
    setResult(RESULT_OK);
else
    ApplicationController.startHomeActivity(this);
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为我FLAG_ACTIVITY_NEW_TASK根据自己的意图设置了标志。正如文档中所说:

当调用者从正在启动的活动中请求结果时,不能使用此标志。

据我了解, anActivity只能Activity从任务中接收结果。但是我需要设置这个标志,否则用户可以Activity stack通过按后退按钮返回。

他们是否有任何解决方法来结合清除堆栈以避免用户在再次登录之前取回活动以及我想介绍的重定向行为?

欢迎任何想法,谢谢。

One*_*lty 0

使用 resultreceiver 可能适合您的设计