`
webdev2014
  • 浏览: 677994 次
文章分类
社区版块
存档分类
最新评论

Android SharedPreferences 数据存储(1)

 
阅读更多

SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件,大家往往会发现一些Android应用程序在你输入完一次登录名和密码之后,下一次就自动填写好了,这是存储在哪里呢?个人认为如果存储在数据库里来回存储与取值太过麻烦,这里,我将用SharedPreferences的方式实现一个登录一次自动记住密码的登陆界面。

首先,要先了解下SharedPreferences,在Android里,SharedPreferences是android.content包下的一个类。通过这个类,我们就可以实现类似与Map那样以key-value的形式进行数据的存储,在这个例子中,我们在登陆界面stop的时候进行用户名与密码的存储,代码如下:

protected void onStop() {
SharedPreferences mySharePreferences = getSharedPreferences(PREFERENCE_NAME, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = mySharePreferences.edit();
editor.putString("username", editName.getText().toString());
editor.putString("userpassword", editPwd.getText().toString());
editor.commit();
super.onStop();
}

解释一下:通过定义SharedPreferences.Editor类型的editor,就可以存储数据,对java有些了解的应该不难理解,这就呵map存储的形式一样,其中PREFERENCE_NAME是我们自己定义的值,用来定义我们的数据存储到的文件的名字,最终这些数据会保存在一个叫PREFERENCE_NAME.xml的文件里面,在虚拟机上打开FileExplorer,会发现这个文件被放在了/data/data/yourApplication/shared_prefs目录下.

在登录界面onCreate的时候进行数据的读取并付给用户名与密码框,代码如下:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
SharedPreferences sharedPreferences = getSharedPreferences(PREFERENCE_NAME, Activity.MODE_PRIVATE);
editName.setText(sharedPreferences.getString("username", ""));
editPwd.setText(sharedPreferences.getString("userpassword", ""));
}

这段代码就更不难理解了,通过得到SharedPreferences对象,就可以通过getString方法得到对应存储的值,在付给用户名和密码框。

好啦,整个结构就这样,想看详细代码在这里下载

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics