我有一个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();
答案 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的交易是您可以从应用程序的任何位置存储和访问数据 - 问题是数据必须是Float
,String
,Int
,{ {1}},Boolean
或Long
数组(集)。由于您是在尝试从计时器中保存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