【发布时间】:2014-05-08 09:40:03
【问题描述】:
我知道这个问题已经在 SO 上被问过很多次了,所以请花一点时间再否决它。我已经通过How to remove application from recent application list?
Quitting an application - is that frowned upon?
Close application and remove from recent apps
还有许多其他关于 SO 的问题。
在我的应用程序中,我将用户登录详细信息存储在 SharedPreferences 中。基本上当我的应用程序启动时 - 活动 A - 启动屏幕将从 3 秒开始显示。然后它将转到活动 B - 用户登录页面,在按下登录时,凭据存储在 SharedPreference 中。然后它将转到活动 C - 主页。 我不希望用户每次都输入登录详细信息,因此我将它们存储在 SharedPreference 中,如果存在该值,则直接重定向到活动 C - 主页。
所以流程是这样的,
如果 SharedPreference 为空
A->B->C
如果 SharedPreference 中存在值
A->B->C, I'm checking in Activity B and when the values are present redirect it to C without making the B to come to front.
如果我从启动器打开应用程序,这一切都很好。但是,如果我从最近的列表中打开它,即使 SharedPreference 中存在这些值,它也会进入活动 B。当我从启动器或最近的列表中打开它时,活动 A(启动屏幕)不会出现。只有当我注销并打开应用程序时它才会显示。会有什么问题?
我厌倦了把<activity android:excludeFromRecents="true"> 放在最近的列表中。即使在此之后,如果我从启动器打开它,它也会进入登录页面,即 Activity B。
我在 Activity C 上像这样覆盖后退按钮
public void onBackPressed() {
if (backPressedOnce) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
super.onBackPressed();
return;
}
this.backPressedOnce = true;
Toast.makeText(this, "Please press back again to exit.", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
backPressedOnce = false;
}
}, 3000);
}
public void onResume()
{
super.onResume();
this.backPressedOnce = false ;
}
所以我有两个问题
Q1) 每次用户启动时如何让启动画面出现? Q2) 如果从最近的列表中启动,为什么即使 SharedPreference 有值,它也不会重定向到 Activity C?
很抱歉问了很长的问题,我知道这不合适。 谢谢
【问题讨论】:
标签: android