且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android开发学习笔记:数据存取之Preference浅析

更新时间:2022-09-12 18:50:53

一.Preference的简介

    Preference(配置)提供了一种轻量级的数据存取方法,主要应用于数据比较少的配置信息。它以“key-value”(是一个Map)对的方式将数据保存在一个XML配置文件中,例如,手机的开机问候语,可以将其以Preference方式来进行配置。也可以保存一些用户个性化设置的字体、颜色、位置等参数信息。

二.Preference存取数据的方法

使用到的接口:

    SharedPreferences接口和SharedPreferences.Editor接口,它们都是来自于andorid.content包。

①SharedPreferences接口提供保存数据的方法

       我们可以调用Context.getSharedPreferences(String name,int mode)方法得到SharedPreferences接口。该方法的第一个参数是文件名称,第二个参数是操作模式。操作模式有三种:

  • MODE_PRIVATE(私有)
  • MODE_WORLD_READABLE(可读)
  • MODE_WORLD_WRITEABLE(可写)

SharedPreferences接口的常用方法

方法名称

方法描述

edit()

返回SharedPreferences的内部接口SharedPreferences.Editor

contains(String key)

判断是否包含该键值

getAll()

返回所有配置信息Map

getBoolean(String key,Boolean defValue)

获得一个boolean

getFloat(String key,float defValue)

获得一个float

getInt(String key,int defValue)

获得一个int

getLong(String key,long defValue)

获得一个long

getString(String key,String defValue)

获得一个String

 

②SharedPreferences.Editor接口提供获得数据的方法

    SharedPreferences.Editor接口中的getString(String key,String defValue)、getInt(String key,int defValue)等。调用SharedPreferences的edit()方法返回SharedPreferences.Editor内部接口,该接口中提供了保存数据的方法,如putString(String key,String value)、pubInt(String key,int value)等,调用该接口的commit方法可以将数据进行保存。

 

SharedPreferences.Editor接口常用的方法

方法名称

方法描述

clear()

清楚所有值

commit()

保存

getAll()

返回所有配置信息Map

putBoolean(String key,Boolean value)

保存一个boolean

putFloat(String key,float value)

保存一个float

putInt(String key,int value)

保存一个int

putLong(String key,long value)

保存一个long

putString(String key,String value)

保存一个String

remove(String key)

删除该键对应的键

下面是保存临时记事本内容的例子

    当我们在手机上用记事本编写备忘录,日志的时候,突然要返回接电话,看短信的时候。我们就要停止编写,退出去听接电话,看短信。然而,当我们打完电话或者看完短信回来的时候,发现刚刚编写的内容还在记事本上,这就是Preference的作用了。

    创建一个Activity,在其中放置一个EditText保存短信内容,放置一个Button用于发送信息。在onCreate()中通过getSharedPreferences()方法获得SharedPreferences接口,调用接口的getString()方法,获得保存内容,将内容设置到EditText中。

    在onStop()方法中保存内容,使用getSharedPreferences().edit()方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString()方法保存短信内容,调用commit()方法提交内容。

MainActivity.java


  1. package com.android.preference;  
  2.  
  3. import android.app.Activity;  
  4. import android.content.SharedPreferences;  
  5. import android.os.Bundle;  
  6. import android.widget.Button;  
  7. import android.widget.EditText;  
  8.  
  9. public class MainActivity extends Activity {  
  10.     private EditText myEditText;  
  11.     private Button btn;  
  12.     private static final String TEMP_INFO="temp_info";  
  13.     @Override 
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.           
  18.         myEditText = (EditText)findViewById(R.id.EditText1);  
  19.         btn = (Button)findViewById(R.id.Button1);  
  20.           
  21.         //获得SharedPreferences实例  
  22.         SharedPreferences sp = getSharedPreferences(TEMP_INFO, MODE_WORLD_READABLE);  
  23.         //从SharedPreferences获得备忘录的内容  
  24.         String content = sp.getString("info_content""");  
  25.         //在EditText中显示备忘录内容  
  26.         myEditText.setText(content);  
  27.           
  28.     }  
  29.       
  30.     @Override 
  31.     protected void onStop() {  
  32.         super.onStop();  
  33.         //获得编辑器  
  34.         SharedPreferences.Editor editor = getSharedPreferences(TEMP_INFO, MODE_WORLD_WRITEABLE).edit();  
  35.         //将EditText中的文本内容添加到编辑器  
  36.         editor.putString("info_content", myEditText.getText().toString());  
  37.         //提交编辑器内容  
  38.         editor.commit();  
  39.     }  

main.xml


  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="备忘录"
  11. />
  12. <EditText
  13. android:text=""
  14. android:id="@+id/EditText1"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. />
  18. <Button
  19. android:id="@+id/Button1"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:text="保存"
  23. />
  24. </LinearLayout>

效果图:

Android开发学习笔记:数据存取之Preference浅析

        当我们退出屏幕再返回的时候,发现原来备忘录里编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了。


本文转自 lingdududu 51CTO博客,原文链接: http://blog.51cto.com/liangruijun/658521