android提供了五种存储数据的方式,分别是:SharedPreferences、文件存储、Sqlite数据库、ContentProvider以及网络存储数据,在本文中,我们将介一下SharedPreferences的使用。

        SharedPreferences是用来存储程序运行时需要的一些数据,比如配置信息,以xml的格式存放在/data/data//shared_prefs目录下,在本运用间可以共享。

import android.app.Activity;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.content.SharedPreferences.OnSharedPreferenceChangeListener;import android.os.Bundle;import android.util.Log;public class SharedPreferencesDemo extends Activity{private String spFileName = "database";@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);/** * ContextWrapper中提供了返回SharedPreferences对象的公共方法, * 即是在运用Application中都可以共享SharedPreferences中的数据  * arg0:文件名 * arg1:文件创建方式,默认为0或者Content.MODE_PRIVATE */SharedPreferences sp = getSharedPreferences(spFileName,Context.MODE_PRIVATE);/** * Editor是SharedPreferences中的一个嵌套接口 * 任何关于SharedPreferences数据更新的操作都必须通过Editor完成 */Editor editor = sp.edit();// Editor可以保存int、float、boolean、long和String几大类型数据editor.putString("host", "127.0.0.1");editor.putInt("port", 3306);editor.putString("usename", "root");editor.putString("password", "root");editor.putString("charset", "utf-8");editor.putString("key", "------------");// 对数据进行更新以后,必须调用commit()方法editor.commit();}}
        

        运行程序后,在File Explore视图里的/data/data//shared_prefs目录下,可以发现有一个database.xml的文件,如下图:

    

        打开文件,可以看到:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>        utf-8    127.0.0.1    root    root

        这下明白了吧,SharedPreferences是以key---value的形式包数据保存在xml文件了,值得注意的是,SharedPreferences是不能保存重复数据的,在使用Editor.putXXX()方式写入数据是,它会一句key只判断该条数据是否已存在,不存在则追加,存在则更新。SharedPreferences也提供了监听数据是否被更新的方法:

sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener(){@Overridepublic void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key){Log.e("SharedPreference", key);}});

        SharedPreferences对数据写入的限制也是其轻量级存储方法的一个体现,它获取数据同样简单:

SharedPreferences sp2 = getSharedPreferences(spFileName, Context.MODE_PRIVATE);boolean flag = sp == sp2;Log.e("flag", String.valueOf(flag));String host = sp2.getString("host", "");Log.e("host", host);String username = sp2.getString("username", "");Log.e("username", username);String password = sp2.getString("password", "");Log.e("password", password);int port = sp2.getInt("port", 0);Log.e("port", String.valueOf(port));


        


更多相关文章

  1. [Android1.6]继承BaseAdapter为GridView设置数据时设置setLayout
  2. Android多种数据库存储方式对比
  3. android音乐文件乱码显示问题解决
  4. Android之Sqlite模糊查询
  5. Android(安卓)intent.Action 参数值及对应功能介绍
  6. Android(安卓)中Preferences的使用!
  7. mybatisplus的坑 insert标签insert into select无参数问题的解决
  8. python起点网月票榜字体反爬案例
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android(安卓)之 AlarmManager(定时器)
  2. Android中Paint字体属性的一些设置
  3. 25、从头学Android之多媒体--使用SoundPo
  4. Android之获取屏幕的三种方式
  5. Android(安卓)C++ 线程使用
  6. Android(安卓)View 相关源码分析之二 继L
  7. [置顶] Android学习计划
  8. Android(安卓)SystemServer 启动流程
  9. 【Android】8.1 主题基本用法
  10. android自定义带下划线EditText