在SharedPreferences中存储天文台

时间:2014-03-15 16:35:16

标签: android sharedpreferences chronometer

我有一个Chronometer应用程序,我想在设备重启时保持时间。例如,如果它在重启后10分钟,我希望它在设备重启时从10分钟继续。

我试图在共享偏好中保存计时器的值。

我相信我可以通过使用下面的代码来获得计时器的价值,但我不确定如何将它存储在SavedPreferences中并在应用程序再次打开时调用它。任何帮助表示赞赏。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    chronometer = (Chronometer) findViewById(R.id.chronometer1);

    long chronostore = chronometer.getBase();

1 个答案:

答案 0 :(得分:0)

要使用共享Prefs,您需要将值保存到SharedPreferences

// Update your preferences when the chronometer is paused, so put this in your OnPause
SharedPreferences prefs = getSharedPreferences("mySharedPrefsFilename", Context.MODE_PRIVATE);
// Don't forget to call commit() when changing preferences.
prefs.edit().putLong("chronoValue", chrono.getValue()).commit();        

//In your OnResume, you need to call the value back
SharedPreferences prefs = getSharedPreferences("mySharedPrefsFilename",            Context.MODE_PRIVATE);
chornostore = prefs.getLong("chronoValue", 0); // 0 is default

这应该让你走上正轨。


编辑:

因此,与SharedPrefs的交易是您可以从应用程序的任何位置存储和访问数据 - 问题是数据必须是FloatStringInt,{ {1}},BooleanLong数组(集)。由于您是在尝试从计时器中保存String值,因此您需要通过Long

保存该值

获取数据:

第1步:使用getSharedPreferences初始化SharedPreferences实例:

putLong

第2步:从您的SharedPreferences实例调用数据:

// Context.MODE_PRIVATE means only this application has access to the files. 
// You can set any name for the file, and the instance. I used "SharedPrefsFileName" and prefs respectively.
SharedPreferences prefs = getSharedPreferences("SharedPrefsFileName", Context.MODE_PRIVATE);

存储数据:

第1步:初始化SharedPreferences.Editor

// The second argument is the value to return if there is no "chronoValue" data. In this case, it will return "0"
chornostore = prefs.getLong("chronoValue", 0); 

第2步:存储数据:

//Use the same SharedPreferences instance and then instantiate an editor for storing:
SharedPreferences prefs = getSharedPreferences("SharedPrefsFileName", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();

第3步:将更改提交给SharedPreferences:

//Use the same "chronoValue" Name for the Name-Value pair that is accepted as the arguments:
editor.putLong("chronoValue", chronostore);

这就是它的全部内容。

根据您的使用情况,您可能会发现在应用程序的editor.commit(); onPause方法中存储/调用值会很有帮助。

如果您需要更多帮助,请阅读此处的有用使用指南:

http://developer.android.com/guide/topics/data/data-storage.html#pref

或此处的文档:

http://developer.android.com/reference/android/content/SharedPreferences.html