由于共享偏好,Android应用程序没有关闭背压

时间:2017-04-11 06:20:58

标签: android sharedpreferences

  

我在登录活动中使用了共享偏好,如果值是   在共享偏好中可用,它将打开HomeActivity

     

但是,当我按下后退按钮应用程序转到我的问题时出现了问题   以前的活动即。 loginActivity我正在检查   sharedpreference值以打开HomeActivity。这使我的应用程序   回到HomeActivity。

LoginActivity.java 代码

@Override
        protected void onResume() {
            super.onResume();
            //In onresume fetching value from sharedpreference
            SharedPreferences sharedPreferences = getSharedPreferences(SharedPrefConfig.SHARED_PREF_NAME,Context.MODE_PRIVATE);
            loggedIn = sharedPreferences.getBoolean(SharedPrefConfig.LOGGEDIN_SHARED_PREF, false);
            username = sharedPreferences.getString(SharedPrefConfig.USERNAME_SHARED_PREF, null);
            if(loggedIn){
                //We will start the Home Activity
                     Intent intent = new Intent(this,HomeActivity.class);
                     startActivity(intent);
            }
        }

HomeActivity.java 代码

boolean doubleBackToExitPressedOnce = false;

@Override
public void onBackPressed() {

    if (doubleBackToExitPressedOnce) {
        super.onBackPressed();
        return;
    }

    this.doubleBackToExitPressedOnce = true;
   Toast.makeText(this, "Please click BACK again to exit", Toast.LENGTH_SHORT).show();

    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce=false;
        }
    }, 2000);
}

4 个答案:

答案 0 :(得分:0)

请在意向通话时完成登录活动  添加这个

 Intent intent = new Intent(this,HomeActivity.class);
                 startActivity(intent);
                 finish();

答案 1 :(得分:0)

当您点击退出时,请编写此代码。因此它会将您重定向到LoginActivity。

    Intent logoutIntent = new Intent(HomeActivity.this, LoginActivity.class);
                            logoutIntent.putExtra("isFromLogout", true);
                            logoutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                            startActivity(logoutIntent);
                            finish();

在LoginActivity中写下代码。

boolean isFromLogout = getIntent().getBooleanExtra("isFromLogout", false);
        if (!isTaskRoot() && !isFromLogout) {
            finish();
            return;
        }
如果您想从您的应用程序注销,

上面的场景将帮助您。现在,当您在主页上并按下后退按钮并想要在后台关闭应用程序时,请使用以下代码。

 private void minimizeApp() {
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
    }

答案 2 :(得分:0)

您的应用应如何运作?

  1. 关闭HomeActivity后关闭应用。
  2. 最简单的方法是在开始家庭活动后完成登录活动。

    Intent intent = new Intent(this, HomeActivity.class);
    startActivity(intent);
    finish();
    
    1. 关闭HomeActivity show login活动。
    2. 您可以在SharedPreferences课程的onDestroy方法中清除HomeActivity。因此,在登录活动的onResume中,什么都不会得到任何东西,并且不会打开任何东西。

      另一种方法 - 检查HomeActivity结果。为此需要更改开始代码 - 放置startActivityForResult方法调用。

      Intent intent = new Intent(this, HomeActivity.class);
      startActivityForResult(intent, 0);
      

      然后在onActivityResult登录活动方法中,执行一些操作以禁用HomeActivity打开(例如,再次清除SharedPreferences)。

答案 3 :(得分:-1)

使用finish()方法。它会破坏活动。

Intent intent = new Intent(this, HomeActivity.class);    
startActivity(intent);
finish();