Android:关闭应用程序并从最近的列表中打开它

时间:2014-05-08 09:40:04

标签: android

我知道这个问题在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">,因此强迫它不要出现在最近的列表中。即使在此之后如果我从启动器打开它,它也会进入登录页面,即活动B.

我在活动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具有值,它也不会重定向到活动C?

很抱歉提出非常冗长的问题,我知道这是不合适的。 谢谢

1 个答案:

答案 0 :(得分:3)

我会把我的想法......

  1. 为什么你要检查B中的共享偏好?如果您已存储在sharedprefernce中,则将用户从A直接重定向到C.

    if(sharedPreference) - &gt; ç

    否则B - &gt; ç

  2. 当你从最近的afaik启动它将调用onresume而不是oncreate而且我相信你正在检查oncreate因此它从最近启动时没有执行,使用日志知道周期也请参考活动生活周期。

  3. 如果您不需要活动存在,您可以调用finish()并在清单中放入noHistory ='true'...

  4. 请看这些观点并纠正我,如果我错在哪里......

    希望它有助于你...