Android开发从入门到放弃(3)使用SharedPreferences保存数据

来源:互联网 发布:海信网络 经理 张四海 编辑:程序博客网 时间:2024/06/05 05:06

在上一篇文章中我在onSaveInstanceState方法中暂时保存了Activity的状态,尽管这也比较有用,但是更多情况下,我们更希望持久化地存储一些简单的数据,例如,保存某些用户的设置,或存储当前游戏的最高分。本篇博客我们来使用SharedPreferences来保存点简单的数据。

接着上一节的例子,在MainActivity.java中,重载一个onPause方法,加入以下代码

@Overrideprotected void onPause() {     super.onPause();     SharedPreferences settings = getPreferences(MODE_PRIVATE);     SharedPreferences.Editor editor = settings.edit();     editor.putInt(KEY_COUNTER, mCounter);     editor.commit();     Log.i("SharedPreferences","SharedPreferences has been writen ,mCounter = " + mCounter);}

通过getPreferences方法获取一个SharedPreferences对象,在调用SharedPreferences对象的edit方法获取一个SharedPreferences的编辑器对象,然后可以调用putXXX之类的方法来存放特定类型的键值对,最后调用editor.commit()来保存设置。

然后,在onCreate方法中来读取SharedPreferences中存储的值。

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    SharedPreferences settings = getPreferences(MODE_PRIVATE);    int defaultCounter = 0;    mCounter = settings.getInt(KEY_COUNTER, defaultCounter);    ((TextView)findViewById(R.id.textViewCounter)).setText("Counter: " + Integer.toString(mCounter));}

还是通过getPreferences方法来获取SharedPreferences对象,该对象可以直接调用getXXX方法来获取值。

此时,我做了个小测试,在另一个Activity中,通过getPreferences方法来获取SharedPreferences对象后,是获取不到我们刚才保存的值的。为什么呢?其实还有另一个方法可以获取到SharedPreferences对象,就是getSharedPreferences(name,mode)方法,第一个name是一个文件名,每个name都对应一个文件,也就意味着我们可以将不同类型的配置项分别存储在不同的文件中,文件的格式是XML,当然,这些基础的功能是Android系统已经提供好的,我们只需要简单地调用一下api就好了。而getPreferences方法会将当前activity类的全名作为name传递给getSharedPreferences方法。

接下来我们把代码稍加改造,为了能在一个activity中保存数据并且在另一个activity中来读取数据。
下面的代码用于在当app处于停止状态时保存状态到名字为mytest的SharedPreferences配置文件中。

public final static String PREF_NAME="mytest";@Override protected void onPause() {     super.onPause();     SharedPreferences settings = getSharedPreferences(PREF_NAME,MODE_PRIVATE);     SharedPreferences.Editor editor = settings.edit();     editor.putInt(KEY_COUNTER, mCounter);     editor.commit();     Log.i("SharedPreferences","SharedPreferences has been writen ,mCounter = " + mCounter); }

接下来在另一个activity的onCreate方法中读取刚才保存的数据

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_second);    SharedPreferences settings = getSharedPreferences(MainActivity.PREF_NAME,MODE_PRIVATE);    int defaultCounter = 0;    int mCounter = settings.getInt(MainActivity.KEY_COUNTER,defaultCounter);    Toast.makeText(this, mCounter+"", Toast.LENGTH_SHORT).show();}

简单好用。祝你的Android开发之路从入门到放弃,不谢!

0 0
原创粉丝点击