2012-12-04 22 views
0

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

进一步的第一个活动可以检查这个SharedPreferences数据来知道应用程序是否已经第一次启动。

我希望你明白我想把数据写入SharedPreferences中,并且第一次也是唯一一次。我应该在哪里做这件事?如果在任何活动中写入,则此代码将在下次活动启动时再次执行。

是否有内置变量来确定应用程序是否是第一次启动?

+0

把它写的onCreate –

+0

它非常简单,你可以为此使用许多方法。您必须在应用程序第一次运行时插入数据,因此,首次在数据库中插入该数据,同时在偏好设置中存储一个布尔值var(true)。下次打开应用程序时检查该变量是否为真,则不需要再次插入数据。 –

+0

@RajeshRajaram如果我在onCreate中写它,这将是第一次是正确的。然而,在应用程序的以下启动中,将数据插入到SharedPreferences中的这段代码将再次执行,覆盖之前的值(我将在之前的活动启动中插入)。 –

回答

0

你可以做的是做一个sharedPrefs布尔值如果应用程序已经运行过。将其设置为false,并在假的情况下执行您的打算代码。那么当应用程序最终运行并完成代码时,将布尔值设置为true。

0

如果我正确理解你想要做的事情非常直截了当。 在你的主要活动的onCreate中放置一个布尔变量。 而只是将其设置为false(初始值true),让你知道,如果它的第一时间你的程序运行

+0

如果应用程序仍在运行,这将工作。但是,如果设备重新启动,那么应用程序将再次执行onCreate中存在的代码。 我希望您明白我只想在ONCE上执行写入SharePreferences的这段代码,即在安装之后。之后,这不应该被执行。 –

+0

然后,也许你可以在SD卡中创建一个虚拟文件并在SharedPreferences中写入之前检查该文件是否存在,或者另一个选项是创建一个sql lite db。 –

0

您可以创建自己的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>