Base-Android快速开发框架(二)--数据存储之SharedPreferences

  对于Android开发者来说,抽象来说,其实就是将数据应各种各样的方式展示在用户面前以及采集用户的数据。采集用户的数据包括用户的输入、触摸、传感器等,展示的数据通过网络来源于各业务系统,以及用户的

输入数据。在这个过程中,数据存储显得由为重要。这也是我做为开端讲解的目的。良好的运用数据存储,不仅的能有效减少范围服务器的次数、用户的流量,还能加快Apps的响应速度,甚至简化应用的业务逻辑。数据

存储这一块将介绍常用的2种数据缓存方式,由Android SharedPreferences文件数据存储作为一章,sqlite 作为一章。另外我这一系列的介绍都不会有基础的介绍api,适合有一定基础的童鞋。

  简单粗暴,开始SharedPreferences。SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置。是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite

要好不少,xml处理时Dalvik会通过自带底层的本地XML Parser解析。下面直接上代码。

/** * SharedPreferences 数据存储工具类 *  *  */public class SPUtil {   private static String PreferenceName = "Constant";

   /**    * 储存复杂的数据对象字段    *     * @param key    * @param t    * @return    */   public static <T> boolean saveObjectToShare(String key, T t) {      return saveObjectToShare(AppContext.getApplication(), PreferenceName,            key, t);   }

   /**    * 储存复杂的数据字段对象    *     * @param context    * @param key    * @param t    * @return    */   public static <T> boolean saveObjectToShare(Context context, String key, T t) {      return saveObjectToShare(context, PreferenceName, key, t);   }

   /**    *     * @param context    * @param name    * @param key    * @param t    * @return    */

   public static <T> boolean saveObjectToShare(Context context, String name,         String key, T t) {      try {         SharedPreferences sp = context.getSharedPreferences(name,               Context.MODE_PRIVATE);         // 存储         Editor editor = sp.edit();         if (t == null) {            editor.putString(key, "");            editor.commit();            return true;         }         ByteArrayOutputStream toByte = new ByteArrayOutputStream();         ObjectOutputStream oos;

         oos = new ObjectOutputStream(toByte);         oos.writeObject(t);         // 对byte[]进行Base64编码         String payCityMapBase64 = new String(Base64.encode(               toByte.toByteArray(), Base64.DEFAULT));

         editor.putString(key, payCityMapBase64);         editor.commit();         return true;      } catch (IOException e) {         e.printStackTrace();         return false;      }   }

   /**    * 得到复杂的数据对象    *     * @param key    * @return    */   public static <T> T getObjectFromShare(String key) {      return getObjectFromShare(AppContext.getApplication(), PreferenceName,            key);   }

   /**    * 得到复杂的数据对象    *     * @param context    * @param key    * @return    */   public static <T> T getObjectFromShare(Context context, String key) {      return getObjectFromShare(context, PreferenceName, key);   }

   /**    * 得到复杂的数据对象    *     * @param key    * @param object    */   @SuppressWarnings("unchecked")   public static <T> T getObjectFromShare(Context context, String name,         String key) {      try {         SharedPreferences sp = context.getSharedPreferences(name,               Context.MODE_PRIVATE);         String payCityMapBase64 = sp.getString(key, "");         if (payCityMapBase64.length() == 0) {            return null;         }         byte[] base64Bytes = Base64               .decode(payCityMapBase64, Base64.DEFAULT);         ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);         ObjectInputStream ois = new ObjectInputStream(bais);         return (T) ois.readObject();      } catch (Exception e) {         e.printStackTrace();      }      return null;   }
/** * 返回String类型数据,默认是“”; *  * @param key * @return */public static String getString(String key) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   return sp.getString(key, "");}

/** * 存储boolean数据类型 *  * @param key * @param value */public static void saveboolean(String key, boolean value) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   Editor editor = sp.edit();   editor.putBoolean(key, value);   editor.commit();}

/** * 返回boolean类型数据,默认是true; *  * @param key * @return */public static boolean getBoolean(String key) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   return sp.getBoolean(key, false);}

/** * 存储int数据类型 *  * @param key * @param value */public static void saveInt(String key, int value) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   Editor editor = sp.edit();   editor.putInt(key, value);   editor.commit();}

/** * 返回int类型数据,默认是true; *  * @param key * @return */public static int getInt(String key) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   return sp.getInt(key, 0);}

/** * 存储float数据类型 *  * @param key * @param value */public static void saveFloat(String key, float value) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   Editor editor = sp.edit();   editor.putFloat(key, value);   editor.commit();}

/** * 返回float类型数据,默认是true; *  * @param key * @return */public static float getFloat(String key) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   return sp.getFloat(key, 0);}

/** * 存储long数据类型 *  * @param key * @param value */public static void saveLong(String key, long value) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   Editor editor = sp.edit();   editor.putLong(key, value);   editor.commit();}

/** * 返回long类型数据,默认是true; *  * @param key * @return */public static long getLong(String key) {   SharedPreferences sp = AppContext.getApplication()         .getSharedPreferences(PreferenceName, Context.MODE_PRIVATE);   return sp.getLong(key, 0);
    }}

  SPUtil作为一个工具类,封装了SharedPreferences的基本所有的静态写入、读取方法。包含int long String boolean 以及复杂的对象。可以快速的实现SharedPreferences的操作。具体在apps里面常用于一些系统的配置,比如常见的在个人设置里面会有是否允许消息推送、是否自动检测版本更新的checkbox。我试过有的项目的这些设置的存储也通过网络存储在服务器,但大部分都是存储在本地。另外有时候遇到过一些listview里面的数据集合的简单缓存以及读取,也没必要劳师动众的建sqlte表,直接做对象序列号存储,有时候可以省很多的事情。下一篇将开始讲解sqlite的数据存储,如果有什么建议,可以给我留言。

 
时间: 2024-07-30 03:27:13

Base-Android快速开发框架(二)--数据存储之SharedPreferences的相关文章

Base-Android快速开发框架(三)--数据存储之SQLite

SQLite,是一款轻量级的关系型数据库,Android原生集成的一个数据库.具有轻量级.独立性.隔离性.安全性等特点.是Android做数据存储的必备知识之一. 在实际的项目中,我们常用于一些对象的存储以及检索.曾经做过一个餐饮点餐系统,就是需要把所有的菜谱.分类等基础数据做本地缓存,这个时候如果你用上章介绍的SharedPreferences,简直就疯掉了. 数据需要做排序.筛选.检索.分页获取等.这个时候就是Sqlite的长处了.跟上章一样,不会有介绍基础的api使用,直接介绍Base里面

Android开发手记(16) 数据存储一 SharedPreferences

SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-value(键值对)SharedPreferences常用来存储一些轻量级的数据.这类似于C++中Map的数据存储方式(实际上在最后生成的.xml文件内,就是以Map格式存储的). 获取SharedPreferences的两种方式: 1.调用Context对象的getSharedPreferences()方法 2.调用Activity对象的getPrefer

看大师讲解Android快速开发框架EasyAndroid

前几天做了小应用,感觉小有成就,名字叫"长见识了",是一款趣味答题类的游戏,题目各种火爆各种经典,下载地址,看似一个简单的答题小游戏却是五脏俱全,从开发流程上都进行了严格的规范,大家有空可以下载玩玩~ 在这个应用中,用到了我以前集成的一个快速开发框架-EasyAndroid,这个框架我以前在做项目的时候总结,整理出来的,对于快速开发Android应用非常实用. 其实,Android应用的开发并不难,我们拿到一款Android应用后,百分之九十以上无外乎有这么几个功能: 1,IOC Mo

android快速开发框架

一.依赖注入DI通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作1. AndroidAnnotations(Code Diet) android快速开发框架项目地址:https://github.com/excilys/androidannotations文档介绍:https://github.com/excilys/androidannotations/wiki官方网站:http://androidannotations.org/特点:(1)依赖注入:包括view,ext

Android快速开发框架ZBLibrary源码分享

坐标标准库ZBLibrary,是一个MVP架构的Android快速开发框架,提供一套开发标准(UI,Data,Listener)以及模板和工具类并规范代码. 封装层级少,简单高效兼容性好.Android Studio.Eclipse多平台支持. OKHttp.图片加载.自动缓存以及各种Base.Demo.UI.Util直接用.一句话就能实现全局滑动返回. BaseHttpListActivity,几行代码搞定http请求列表 加载和缓存: BaseView,自定义View竟然如此简单: 万能的E

Android数据存储-通过SharedPreferences实现记住密码的操作

在Android中登陆中,为了实现用户的方便,往往需要根据用户的需要进行记住密码的操作,所以,在Android数据存储中SharedPreferences恰恰可以实现这一点 下面,小编将带领大家通过SharedPreferences实现记住密码的操作 一.首先:介绍下什么是SharedPreferences? SharedPreferences是Android平台上一个轻量级的存储类,用来保存应用的一些常用配置. 二.介绍了SharedPreferences,我们将通过记住SharedPrefe

Android 数据存储之 SharedPreferences储存

------------------------------------------SharedPreferences存储-------------------------------------------- SharedPreferences 使用键值对方式来存储数据的.当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出. SharedPreferences 支持多种不同数据类型的存储,可以按照需要取出数值型,或者字符型的数据. ----

Android 快速开发框架CommonLibsForAndroid(有Demo)

这个项目所包含的功能,全部是从实际项目中提取,开发这个类库的初衷也只是为了方便自己开发Android项目.由于时间所限,目前大量的内容还没整理到这个开源项目中,doc和demo也有所欠缺,我将尽快完善.而其中大量不合理的内容,也将逐步改进. 欢迎大家提各种意见,当然更欢迎fork和pull request. https://github.com/cymcsg/CommonLibsForAndroid CommonLibsForAndroid Using CommonLibs is a fast

【源码分享下载】每日更新之Android快速开发框架LoonAndroid

Android快速开发框架LoonAndroid 服务分类: 其他 使用服务: 其他 功能分类: 其他 支持平台: Android 运行环境: Android 开发语言: Java 开发工具: Eclipse 源码大小: 14.65MB 源码下载地址:http://www.devstore.cn/code/info/74.html 源码简介 主要有以下模块: (1) 自动注入框架(只需要继承框架内的application既可) (2) 图片加载框架(多重缓存,自动回收,最大限度保证内存的安全性)