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开发之路从入门到放弃,不谢!
- Android开发从入门到放弃(3)使用SharedPreferences保存数据
- Android开发从入门到放弃(4)使用RelativiLayout
- Android开发从入门到放弃(5)使用LinearLayout
- Android开发从入门到放弃(6)使用TableLayout
- Android开发从入门到放弃(7)使用GridLayout
- Android开发从入门到放弃(2)保存Activity的状态
- Android开发从入门到放弃(1)在Activity之间传递数据
- Android开发从入门到放弃(10)适配GridView
- 【Android 从入门到放弃】 ButterKnife 使用
- Android开发从入门到放弃(8)使用ListView显示一个简单的列表
- Android开发从入门到放弃(9)使用ListView显示一个类的数组
- Android开发---使用SharedPreferences保存数据
- Android从入门到放弃3-线程
- Android保存数据到SharedPreferences
- Android开发-使用SharedPreferences保存数据-常用操作
- Android开发从入门到放弃(11)适配Spinner和AutoComplete
- web开发从入门到放弃
- android保存数据到本地 SharedPreferences
- linux下rc 是什么意思
- (二十一)状态模式详解(DOTA版)
- MyBatis 物理分页
- 关于Machine Learning中Bias与Variance的整理与总结
- Getting started with Yocto on Wandboard(in China)
- Android开发从入门到放弃(3)使用SharedPreferences保存数据
- 算法 连续邮资问题
- 数据库传入中文乱码
- Android Fragment 懒加载
- 二分查找套路
- 【气球】关于气球动力与控制的设想
- 专题3-ARM汇编指令详解
- CUDA总结:opencv cuda模块高斯滤波函数分析
- 斐波拉契数列