我有一个应用程序,每个新创建的活动都将启动一个异步任务来验证用户会话。如果会话有效,应用程序流将继续。如果不是,则必须清除整个活动堆栈,并且应该只有登录活动。此活动具有“无历史记录”标志,因此它永远不会保留在堆栈中。清除Android活动堆栈开始一个新的活动
我一直在尝试这里提供的一些解决方案:Android: Clear Activity Stack但没有成功。
这必须工作在最低的机器人可能,至少2.2
谢谢!
我有一个应用程序,每个新创建的活动都将启动一个异步任务来验证用户会话。如果会话有效,应用程序流将继续。如果不是,则必须清除整个活动堆栈,并且应该只有登录活动。此活动具有“无历史记录”标志,因此它永远不会保留在堆栈中。清除Android活动堆栈开始一个新的活动
我一直在尝试这里提供的一些解决方案:Android: Clear Activity Stack但没有成功。
这必须工作在最低的机器人可能,至少2.2
谢谢!
我在堆栈上保留我的登录活动。在登录Activity的onResume()中,我检查用户是否具有登录凭据,如果是,请在登录后提供的下一个屏幕上调用startActivity。在这种情况下用户没有看到登录屏幕。
当用户按下注销按钮,我清除用户的凭据,然后这个清除栈一路回到登录屏幕:
Intent intentLaunchLogin = new Intent(this, ActivityLogin.class);
intentLaunchLogin.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intentLaunchLogin);
此外,如果用户是后呈现在屏幕上登录并按下'后退'按钮,我不希望他们去登录活动。此代码将用户发送到主屏幕正如所预料的:
moveTaskToBack(true);
难道你不喜欢这里描述的东西:
http://blog.janjonas.net/2010-12-20/android-development-restart-application-programmatically
基本上你创建启动你的意图报警,那么你彻底关闭应用。
没有。 ..我不想重新启动应用程序...我认为这不会是一个好的用户体验... – 2012-04-06 19:44:37
这是我一直做的和完美的作品。 我启动应用程序与主活动的检查,如果用户登录,如果他不是在推出记录这样
void launchLoginActivity(){
/* Move user to LoginActivity, and remove the backstack */
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
登录活动将不允许掉头回去
我会给它尝试;)只是一个疑问,moveTaskToBack函数必须放在除了为登录一个或登录之一? – 2012-04-06 20:12:05
它的工作原理是,登录后对活动进行了一些细微的更改。我劫持了后退按钮动作以移动任务回退并完成活动。我希望它在每次应用程序恢复时都从登录活动开始 – 2012-04-06 20:34:35
我只在登录后的Activity上的onBackPressed处理程序中使用moveTaskToBack调用,因为我不希望用户再次看到登录屏幕。我只想登录屏幕出现,如果用户注销。 – Andrew 2012-04-06 20:41:00