有时候,应用程序有少量数据需要保存,比如说是否使用振动,是否打开GPS等设置,对于这些小数据量的需求,没有必要使用数据库
Android提供了SharedPreferences接口,它用来读取程序的Preferences数据,它保存的数据主要是简单的key-vaule对
有如下方法来访问key-value对
boolean contains(String key) 判断是否包含特定key的数据
abstract Map<String,?> getAll() 获取SharedPreferences数据里面全部的key-value对
getXxx(String Key,xxx defValue) 判断是否包含特定key的数据,如果不包含,返回默认值得defValue,Xxx为数据类型


SharedPreferences本身没有提供写入数据的能力,而是通过内部接口调用edit()方法即可获取它所对应的Editor对象
Editor提供如下方法来向SharedPreferences写入数据
clear() 清空SharedPreferences所有数据
putXxx(String key,xxx value) 向SharedPreferences存入指定key对应的数据
remove(String key) 向SharedPreferences删除指定key对应的数据
boolean commit() 当Editor编辑完成后,调用该方法提交修改


通过Context提供的getSharedPreferences(String name,int mode) 来获取SharedPreferences
第二个参数有如下几个值:
Context.MODE_PRIVATE: 指定数据只能被本应用程序读写
Context.MODE_WORLD_READABLE: 指定数据能被其它应用程序读,但不能写
Context.MODE_WORLD_WRITEABLE: 指定数据能被其它应用程序读和写


下面程序向Preferences写入当前时间和一个随机数

package WangLi.IO.SharedPreferencesTest;import java.util.Date;import java.text.SimpleDateFormat;import android.app.Activity;import android.content.SharedPreferences;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class SharedPreferencesTest extends Activity {SharedPreferences preferences;SharedPreferences.Editor editor;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //获取只能被本应用程序读,写的SharedPreferences对象        preferences = getSharedPreferences("IO",MODE_PRIVATE);        editor = preferences.edit();        Button read = (Button)findViewById(R.id.read);        Button write = (Button)findViewById(R.id.write);        read.setOnClickListener(new OnClickListener()        {        public void onClick(View arg0)        {        //读取字符串数据        String time = preferences.getString("time", null);        //读取int类型的数据        int randNum = preferences.getInt("random", 0);        String result = time == null ? "您暂时还未写入数据"         : "写入时间为:" + time        + "\n 上次生成的随机数为:" + randNum;        //使用Toast提示信息        Toast.makeText(SharedPreferencesTest.this, result, 5000).show();        }        });        write.setOnClickListener(new OnClickListener()        {        public void onClick(View arg0)        {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日" + "hh:mm:ss");        //存入当前时间        editor.putString("time", sdf.format(new Date()));        //存入一个随机数        editor.putInt("random", (int)(Math.random() * 100));        //提交所有存入的数据        editor.commit();        }        });    }}

存储好的Preferences可以在DDMS的File Explorer 中找到


导出文件打开,里面就是刚刚写入的Key-Value

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <map>  <int name="random" value="73" />   <string name="time">2012年09月06日03:08:07</string> </map>



更多相关文章

  1. android 预装第三方apk的方法(非system priv-app)
  2. adroid之Sqlite篇
  3. Android应用程序反编译
  4. Android(安卓)TextView使用HTML处理字体样式、显示图片等
  5. 个推-Android集成
  6. [置顶] Android(安卓)屏幕旋转相关解析
  7. Android(安卓)开源库StickyListHeadersListView来实现ListView列
  8. android 自学日记(五) ——ListView
  9. Android中Okhttp,Volley,Retrofit网络框架优缺点及对比

随机推荐

  1. Android客户端使用HttpClient发起web数据
  2. Android官方框架DataBinding
  3. Android之TextView的样式类Span的使用详
  4. Android 8.0 中如何读取内部和外部存储以
  5. Android(安卓)Open Source Projects(汇总
  6. 如何在Android中实现全屏,去掉标题栏效果
  7. 从Android到React Native开发(四、打包流
  8. android分层学习笔记(三)
  9. View视图框架源码分析之一:android是如何
  10. android 增加物理按键关闭wifi实例讲解