0

我正在构建一个应用程序,找到了一个 java 部分,它让我只在第一次启动时显示一个活动。这可行,但是当我杀死该应用程序或重新启动手机时,它会返回,任何人都可以帮我解决这个问题吗?

我在我的主要活动中使用它(Toolz.java)

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (Prefs.firststart == false) {
            setContentView(R.layout.toolz);
        } else {
            Intent i = new Intent(this, First.class);
            startActivity(i);
            finish();
          }


    }



    @Override
    protected void onResume() {
        super.onResume();
  }

我将它添加到 First.java

    Prefs.firststart=false;

我制作了 Prefs.java 并添加了这个

public class Prefs {
    public static boolean firststart = true;
}
4

4 回答 4

2

您将需要使用SharedPreferences而不是静态变量来保存数据,这些数据在应用程序终止或设备重新启动时也可用。

您可以看到以下教程我们如何使用 SharedPreferences 从 SharedPreferences 保存和读取数据

共享偏好

于 2013-05-16T17:25:19.697 回答
1

当您杀死您的应用程序时,这些值将重置为其初始值。您的布尔值将等于 true。我建议使用 SharedPreferences 保存变量的状态。看看有人问的关于储蓄的另一个问题。

如何在android应用程序中保存变量的状态并使用它

于 2013-05-16T17:26:50.707 回答
1

当应用程序重新启动时,您的所有代码将从起点开始(即Prefs.firststart设置为 true)。相反,您需要创建一个在整个会话期间保存的持久变量。如果您使用的是数据库,您可以使用它,或者您可以使用内置的SharedPreferences,如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SharedPreferences prefs = this.getPreferences(MODE_PRIVATE);
    if (prefs.contains("started")) {
        setContentView(R.layout.toolz);
    } else {
        //Add the preference:
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean("started",true);
        editor.apply();
        Intent i = new Intent(this, First.class);
        startActivity(i);
        finish();
      }


}
于 2013-05-16T17:38:35.850 回答
0

像这样试试

//**** First start *****

//you get the prefs for your app using a pref name 
String PREFS_NAME = "myAppPrefs";
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
//persist the boolean value in preferences using a key-value approach
editor.putBoolean("pref_app_started", true);
//commit the changes
editor.commit();

当您启动应用程序时,您会检查该首选项

//**** next start *****
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
//now we get the saved boolean using the key we previously uesd when setting it
//the second parameter is the default value for the flag in case it was never set
boolean wasAppStarted = settings.getBoolean("pref_app_started", false);

//现在你可以使用你的 wasAppStarted 标志来决定你进一步做什么

于 2013-05-16T17:34:33.470 回答