数据存取之Preference浅析
2016-02-23 11:03
567 查看
一.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接口的常用方法
②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接口常用的方法
下面是保存临时记事本内容的例子
当我们在手机上用记事本编写备忘录,日志的时候,突然要返回接电话,看短信的时候。我们就要停止编写,退出去听接电话,看短信。然而,当我们打完电话或者看完短信回来的时候,发现刚刚编写的内容还在记事本上,这就是Preference的作用了。
创建一个Activity,在其中放置一个EditText保存短信内容,放置一个Button用于发送信息。在onCreate()中通过getSharedPreferences()方法获得SharedPreferences接口,调用接口的getString()方法,获得保存内容,将内容设置到EditText中。
在onStop()方法中保存内容,使用getSharedPreferences().edit()方法获得SharedPreferences.Editor接口,调用SharedPreferences.Editor的putString()方法保存短信内容,调用commit()方法提交内容。
MainActivity.java
main.xml
效果图:
当我们退出屏幕再返回的时候,发现原来备忘录里编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了。
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接口中的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
package com.android.preference; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText myEditText; private Button btn; private static final String TEMP_INFO="temp_info"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myEditText = (EditText)findViewById(R.id.EditText1); btn = (Button)findViewById(R.id.Button1); //获得SharedPreferences实例 SharedPreferences sp = getSharedPreferences(TEMP_INFO, MODE_WORLD_READABLE); //从SharedPreferences获得备忘录的内容 String content = sp.getString("info_content", ""); //在EditText中显示备忘录内容 myEditText.setText(content); } @Override protected void onStop() { super.onStop(); //获得编辑器 SharedPreferences.Editor editor = getSharedPreferences(TEMP_INFO, MODE_WORLD_WRITEABLE).edit(); //将EditText中的文本内容添加到编辑器 editor.putString("info_content", myEditText.getText().toString()); //提交编辑器内容 editor.commit(); } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="备忘录" /> <EditText android:text="" android:id="@+id/EditText1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/Button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存" /> </LinearLayout>
效果图:
当我们退出屏幕再返回的时候,发现原来备忘录里编辑了一半的内容还在那里,其实它是把要保存的内容做诶XML文件保存在/data/data/package/shsared_prefs/下面了。
相关文章推荐
- JS实现的仿QQ空间图片弹出效果代码
- Wpf listbox修改选中的项样式
- 237. Delete Node in a Linked List
- js获得桌面size
- Jquery获取select标签的值、文本方式
- React.Children
- CSS3 滤镜
- Ext JS 5.1.0 Grid的deselect事件失效的处理方法
- jquery hover(overListener, outListener) || bind('mouseover',methodA).bind('mouseout',methodB)
- HTML代码书写规范指南
- jQuery监听文本框值改变触发事件(propertychange)
- 彻底理解js中this的指向
- Hql group by unexpected AST node
- 【刷题笔记/剑指Offer】Part 1 (1-10)
- Java Web自定义邮箱服务器,实现前端跨域访问
- Mootools遮罩层练习(原为网上的jquery写法)
- 无废话ExtJs 入门教程十七[列表:GridPanel]
- javascript 小白学习指南专题 -- 执行上下文 执行上下文栈
- jQuery.Validate验证库
- JQuery给动态加载的节点绑定有效事件