这是我的情况:我有一系列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 行为的任何解决方法介绍?
欢迎提出任何想法,谢谢。
答案 0 :(得分:0)
使用resultreceiver可能适合您的设计