Android学习小Demo(7)SharedPreference的使用
在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()方法才能将数据写到文件中,并保存在上面所写的文档中。
下面是登陆界面,随便输入用户名跟密码,然后点击login,就会进入到欢迎界面。源代码请点击!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。