在Android系统中,有各种不同的存储方式,而SharedPreference就是其中最简单的一种。
SharedPreference本质上就是一个xml文件,其存储结构则是一个Map,里面的值都是以键值对<Key,Value>的形式存在,如下图:
可以看到根结点是一个<Map>元素,下面的每一个元素都是我们存进去的值,分别对应不同的基本属性,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的路径下:
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的使用
Android游戏保存之SharedPreference使用Demo源码.rar
一个可移植的快速开发的android的sharedpreference Demo
安卓本地密码的实现Demo ,利用sharepreference保存数据,仿IOS设计
简明、完整、全面的安卓开发demo集合,包含如下示例 1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ...
介绍 学习Android开发的代码,基于AndroidStudio View_Demo是Android基础控件和布局,包括TextView,Edittext,ImageView,Button,RadioButton,Checkbox,ProgressBar和拖动条。 Adapter_Demo 是Adapter相关的代码...
本demo实现欢迎界面及首次安装显示导航界面。使用到的技术主要为ViewPager,SharedPreference。开发工具为Android Studio。
Android应用源码开发Demo,主要用于毕业设计学习。
listview, viewpager, mediastore, 网络监听, 摄像头使用, 录音, 数据库, 定时, listfragment, animation, sharedpreference, notification, 下载, 对话框, 控件拖动 只适合作为入门资料参考,以后还会添加更多内容...
这是一个基于android的保存配置文件的demo,通过这个应该就能明白其他的保存配置文件的相关方法,使用的是SharedPreference ,希望对大家有帮助,还有做的不好的不吝赐教
一个实现Android单点登录的Demo,是通过多个应用之间共享SharedPreference数据来实现的。
android清除本地数据缓存示例,主要功能清除内/外缓存,清除数据库,清除sharedPreference,清除files和清除自定义目录,需要的朋友可以参考下
数据持久化就是指将那些内存中的瞬时数据保存到持久化设备中(如手机文件、数据库等),当关机,停电后,数据不丢失。 Android 系统中主要提供了三...这个文件是使用SharedPreference 存储 实现登陆时记住密码的小demo
数据持久化就是指将那些内存中的瞬时数据保存到持久化设备中(如手机文件、数据库等... Android 系统中主要提供了三种方式用于实现数据持久化功能,分别是: 1、文件存储 2、SharedPreference 存储 3、数据库存储。
该demo是根据学习第一行代码写的,里面包括把数据保存到文件,保存到SharedPreferences中,还有数据库中,以及对数据库简单的增删改查