SharedPreferences在Android中无法正常工作

时间:2015-06-20 17:41:15

标签: android sharedpreferences

我的应用程序中有一个帮助活动,我希望它只在第一次运行时启动。

我试过这个:

在创建帮助活动时:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", true);
editor.commit();

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

在onResume of Help Activity中:

@Override
public void onResume() {
super.onResume();
SharedPreferences settings = getSharedPreferences("prefs", 0);
boolean firstRun = settings.getBoolean("firstRun", true);
if (!firstRun) {
    Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
    Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString());
} else {
    Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString());
}
}

on MainCctivity onCreate:

SharedPreferences settings = getSharedPreferences("prefs", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("firstRun", false);
editor.commit();

boolean firstRun = settings.getBoolean("firstRun", true);
Log.d("TAG1", "firstRun: " + Boolean.valueOf(firstRun).toString());

但是它没有显示帮助活动,当它运行应用程序时它只会跳转到MainActivity !!

我的应用程序中有一个退出按钮,当我想使用该按钮退出应用程序时,它再次显示MainActivity并且没有退出应用程序。

1 个答案:

答案 0 :(得分:3)

MainActivity的onCreate中执行此操作。如果您将MainActivity设置为启动器活动,那就是您应该需要的全部内容。这是我推荐的。

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

boolean firstRun = settings.getBoolean("firstRun", true);
if (firstRun) {
    settings.edit().putBoolean("firstRun", false).apply();
    //start help activity
}

使用MainActivity作为启动器活动,您应该更快地启动,因为您不会每次都创建两个活动。而且你避免在后台堆叠中有两个活动。

ps:Google不建议使用"退出"按钮。相反,您应该依靠back \ home按钮来关闭应用程序,并让操作系统决定应用程序何时销毁 Is quitting an application frowned upon?