热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android学习小Demo(7)SharedPreference的使用

在Android系统中,有各种不同的存储方式,而SharedPreference就是其中最简单的一种。SharedPreference本质上就是一个xml文件,其存储结构则是一个M

在Android系统中,有各种不同的存储方式,而SharedPreference就是其中最简单的一种。

SharedPreference本质上就是一个xml文件,其存储结构则是一个Map,里面的值都是以键值对的形式存在,如下图:

《Android学习小Demo(7)SharedPreference的使用》

可以看到根结点是一个元素,下面的每一个元素都是我们存进去的值,分别对应不同的基本属性,sharedpreference也仅支持这些简单的基本属性。

因为其简单,所以一般来说,我们用sharedpreference来存储一些简单的状态信息,比如我们做音乐播放器的时候,当我们退出程序,可以将正在播放的歌曲和其进度给写到一个sharedpreference里面,当下次重新打开播放器的时候,就可以将先前保存的状态给拿出来,继续播放。

接下来我们就来看一下其用法,我们写一个登陆界面:

1)MainActivity:在登陆界面输入用户名跟密码,点击按钮,将用户名跟密码保存在sharedpreference,进入欢迎界面。

2)WelcomeActivity:在欢迎界面,从sharedpreference中拿出用户名,展示在界面上。

代码如下:

public class MainActivity extends Activity implements OnClickListener{
...
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
...
sharedPreferences = this.getSharedPreferences(ACCOUNTS, MODE_PRIVATE);
editor = sharedPreferences.edit();
}
...
private boolean write(){
username = etUsername.getText().toString();
password = etPassword.getText().toString();

editor.putString(USERNAME, username);
editor.putString(PASSWORD, password);
editor.putBoolean("boolean", true);
editor.putFloat("float", 2.0f);
editor.putInt("int", 1000);
editor.putLong("Long", 1234567890l);

editor.commit();
...
}
}

我们来看一下sharedpreference的使用:

1)利用this.getSharedPreferences方法来获取一个对象:

1.1)其中第一个参数是这个文件的名字,当我们保存的时候,文件会被放在data/data/包名/shared_prefs的路径下:

《Android学习小Demo(7)SharedPreference的使用》

1.2)第二个参数是一个Mode,一般会用到以下三个值:

a)MODE_PRIVATE:表明是私有的,创建的文件只能由当前应用程序访问。

b)MODE_WORLD_READABLE:世界可读,很显然,其他应用程序也能访问,但只能读。

c)MODE_WORLD_WRITABLE:世界可写,风险更大,其他应用程序不仅能读,还能写(会产生覆盖)。

2)如果我们只是需要去读取值的话,比如在WelcomeActivity中,我们只需要去读取其里面的值,只要获取这个对象就可以了。

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);

sharedPreferences = this.getSharedPreferences(MainActivity.ACCOUNTS, MODE_PRIVATE);

tvWlcUser = (TextView) findViewById(R.id.tvWlcUser);
String username = sharedPreferences.getString(MainActivity.USERNAME, "Mr. Unknown");
tvWlcUser.setText(username);

}

在上面,我们可以调用sharedpreference.getXXX等方法来获取对应类型的值,第一个参数是Key值,第二个参数是取不到value的时候,给的默认值。

3)当我们想要往文件里面写值的时候,如第一段代码里面所写,我们就还需要一个editor对象。其实所有的写值操作是通过editor的对象来写的,它就像一个事务一样,最后要调用 editor.commit()方法才能将数据写到文件中,并保存在上面所写的文档中。

4)那么如果我们要将原先写的数据删掉呢?我们还是要通过editor对象来操作。editor对象提供了remove(String key)和clear()的方法,可以让我们将之前写入的值给擦掉,当然,最后也别忘了要调用commit方法。

private boolean remove(){
editor.remove(USERNAME);
editor.remove(PASSWORD);
editor.remove("boolean");
editor.remove("float");
editor.remove("int");
editor.remove("Long");
editor.commit();
return true;
}

下面是登陆界面,随便输入用户名跟密码,然后点击login,就会进入到欢迎界面。源代码请点击!

《Android学习小Demo(7)SharedPreference的使用》


推荐阅读
author-avatar
张芬921_162
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有