【问题标题】:Where to write the data into the SharedPreferences?在哪里将数据写入 SharedPreferences?
【发布时间】:2012-12-04 11:29:23
【问题描述】:

我已经了解如何使用 SharedPreferences。但我不明白的是在哪里编写将数据插入共享首选项的代码。此代码在应用程序首次启动时只需要执行一次。

在第一个活动上可以进一步检查这个 SharedPreferences 数据,以了解应用程序是否是第一次启动。

我希望您理解我想第一次也是唯一一次将数据写入 SharedPreferences。我应该在哪里这样做?如果在任何活动中编写此代码,将在下一次活动启动时再次执行。

是否有内置变量来判断应用程序是否首次启动?

【问题讨论】:

  • 它非常简单,您可以使用多种方法。您必须在应用程序第一次运行时插入数据,因此,第一次在数据库中插入该数据,同时在首选项(true)中存储一个布尔变量。下次打开应用时检查变量是否为真,则无需再次插入数据。
  • @RajeshRajaram 如果我把它写在 onCreate 中,它会是第一次正确。然而,在应用程序的以下启动中,将数据插入 SharedPreferences 的这段代码将再次执行覆盖先前的值(我将在先前的活动启动中插入)。
  • @PramodSetlur 因此使用 SharedPreferences 设置标志 0 和 1。将其置于 if 条件中。如果第一次执行第 0 个标志第二次执行第一个标志得到我?

标签: android sharedpreferences startup


【解决方案1】:

你可以做一个 sharedPrefs 布尔值来判断应用是否已经运行过。将其设置为 false,如果为 false,则执行您的预期代码。然后当应用程序最终运行并完成代码时,将布尔值设置为 true。

【讨论】:

    【解决方案2】:

    如果我理解正确,您想要做的事情非常简单。 在主要活动的 onCreate 中放置一个布尔变量。 只需将其设置为 false(初始值为 true),以便您知道它是否是您的应用第一次运行

    【讨论】:

    • 如果应用程序仍在运行,这将起作用。但是如果设备重新启动,那么应用程序将再次执行 onCreate 中的代码。我希望您理解我只想执行一次写入 SharePreferences 的代码,即在安装后立即执行。之后不应执行此操作。
    • 那么也许您可以在 SD 卡中创建一个虚拟文件,并在写入 SharedPreferences 之前检查该文件是否存在,或者另一种选择是创建一个 sql lite db。
    【解决方案3】:

    您可以创建自己的Application 类并在 onCreate 方法中编写 SharedPreferences。

        public class MyApplication extends Application {    
            @Override
            public void onCreate() {
            SharedPreferences settings = getSharedPreferences("MyPrefs", MODE_PRIVATE);
            Boolean firstRun = settings.getBoolean("firstRun",true);
             if(firstRun){
                //insert your data into the shared preferences here
                SharedPreferences.Editor editor = settings.edit();
                editor.putBoolean("firstRun", false);
                editor.commit();
            }
    
    
            }
    }
    

    AnroidManifest.xml

        <application android:icon="@drawable/ic_launcher"
                         android:label="@string/app_name"                     
                         android:name=".MyApplication">
    ...
    </application>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2012-01-03
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      相关资源
      最近更新 更多