码迷,mamicode.com
首页 > 移动开发 > 详细

Android数据存储之SharedPreferences存储

时间:2015-04-12 22:19:15      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

安卓系统为应用提供了系统级的配置存储方案,它就是靠SharedPreferences接口来实现的,该接口存储的所有信息都是以名值对的形式保存,但其保存的数据类型也仅限于基本数据类型,如字符串、整形、布尔型等。这些配置最后会保存在一个XML文件中,每次打开应用时,这些保存的信息就会被加载进来,我们也可以在“管理应用程序”中将这些缓存数据清除。

 

SharedPreferences接口的常用方法如下:

SharedPreferences接口类方法
No 方法 类型 描述
1 public abstract SharedPreferences.Editor edit() 普通 使其可编辑,并获得编辑器对象
2 public abstract boolean contains(String key) 普通 判断key是否存在
3 public abstract Map<String,?>getAll() 普通 获得全部数据
4 public abstract boolean getBoolean(String key, boolean defValue) 普通 获得boolean值,若无,则设为defValue
5 public abstract float getFloat(String key, float defValue) 普通 获得float值,若无,则设为defValue
6 puclic abstract int getInt(String key, int defValue) 普通 获得int值,若无,则设为defValue
7 public abstract long getLong(String key, long defValue) 普通 获得long值,若无,则设为defValue
8 public abstract String getString(String key, String defValue) 普通 获得Sting值,若无,则设为defValue

 

 

 

 

 

 

 

 

 

 

 

SharedPreferences接口的方法getXxx()用来获取已经存储的值,而要写入新的名值对则需要获得它的编辑器接口SharedPreferes.Editor接口,即调用SharedPreferences接口的edit()方法即可获得。

 

SharedPreferences.Editor接口的常用方法如下:

No 方法 类型 描述
1 public abstract SharedPreferences.Editor clear() 普通 清除所有数据
2 public abstract boolean commit() 普通 提交更新的数据
3 public abstract SharedPreferences.Editor putBoolean(String key, Boolean value) 普通 保存boolean型数据
4 public abstract SharedPreferences.Editor putFloat(String key, float value) 普通 保存float型数据
5 public abstract SharedPreferences.Editor putInt(String key, int value) 普通 保存int型数据 
6 public abstract SharedPreferences.Editor putLong(String key, long value)  普通 保存long型数据 
7 public abstract SharedPreferences.Editor putString(String key, String value)  普通 保存String型数据 
8 public abstract SharedPreferences.Editor remove(String key)  普通 删除指定key的数据 

 

 

 

 

 

 

 

 

 

由于SharedPreferences和SharedPreferences.Editor都是接口,所以要想获得他们的实例化对象,还需要Activity类的方法和常量的支持

public static final int MODE_PRIVATE, public static final int MODE_WORLD_READBALE, public static final int MODE_WORLD_WRITEBALE常量和public SharedPreferences getSharedPreferences(String name, int mode)(其中name指保存的文件名称,mode指操作的模式)。

 

下面以一个实例加以说明:

 1 package com.wl.testsharedpreferences;
 2 
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.content.SharedPreferences;
 6 import android.view.Menu;
 7 import android.view.TextureView;
 8 import android.view.View;
 9 import android.view.View.OnClickListener;
10 import android.widget.Button;
11 import android.widget.TextView;
12 
13 public class MainActivity extends Activity implements OnClickListener {
14 
15     Button btn1,btn2;
16     SharedPreferences sp = null;
17     
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         btn1 = (Button) findViewById(R.id.btn1);
23         btn2 = (Button) findViewById(R.id.btn2);
24         
25         btn1.setOnClickListener(this);
26         btn2.setOnClickListener(this);
27         
28         sp = getSharedPreferences("mysp", Activity.MODE_PRIVATE);  //获得SharedPreferences实例
29     }
30 
31 
32     @Override
33     public void onClick(View view) {
34         // TODO Auto-generated method stub
35         TextView tv = (TextView) findViewById(R.id.tv);
36         if(view == btn1) {
37             SharedPreferences.Editor editor = sp.edit();
38             editor.putString("author", "xiaowang");
39             editor.putInt("age", 25);
40             editor.commit();
41             tv.setText("Write successfully!");
42         } else if(view == btn2) {
43             tv.setText(sp.getString("author", "xiaozhang") + "," + sp.getInt("age", 20));
44         }
45     }
46 }
 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <TextView 
 8         android:id="@+id/tv"
 9         android:layout_width="fill_parent"
10         android:layout_height="wrap_content"/>
11     
12     <Button 
13         android:id="@+id/btn1"
14         android:layout_width="fill_parent"
15         android:layout_height="wrap_content"
16         android:text="@string/btn1"/>  //string/btn1为"写名值对"
17     
18     <Button
19         android:id="@+id/btn2"
20         android:layout_width="fill_parent"
21         android:layout_height="wrap_content"
22         android:text="@string/btn2"/>  //string/btn2为"读名值对"
23 
24 </LinearLayout>

从以上例子可以很容易的掌握SharedPreferences的用法。

 

注:当我们写入名值对后,一定记得要调用commit()函数,不然所写入的并未提交,也就无从读出了。

Android数据存储之SharedPreferences存储

标签:

原文地址:http://www.cnblogs.com/wustwl/p/4420554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!