Android 保存浏览记录 SharedPreTools
来源:互联网 发布:韦德历届总决赛数据 编辑:程序博客网 时间:2024/05/21 05:36
SharedPreference 在Android 开发过程中,被经常运用,今天来写一下它的工具类
先介绍下 EdjApp ,属于自定义的Android Application 创建全局变量
一、简单的数据存储方式,用来保存账号、密码等信息
二、用来保存多键值对象的id 等信息,如果我要获取一组自定义的存储对象,我可以先将它的id先保存下来
三、对象类型的数据存储 一般用于自动登录、浏览历史等
下面是工具类,serviceinfo对象是网络获取的信息对象,我会存储并以查看时间的毫秒为对象的saveTime值
import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.StreamCorruptedException;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Comparator;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.commons.codec.binary.Base64;import android.content.Context;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import com.maq.api.ServiceInfo;import com.maq.api.ServiceInfoComparator;import com.maq.app.EdjApp;public class SharedPreTools {//单键值存储----------------------------public static String readShare(String sharename,String key) {SharedPreferences user = EdjApp.getInstance().getSharedPreferences(sharename,0);return user.getString(key, "");}public static void writeShare(String sharename,String key,String value ) {SharedPreferences user = EdjApp.getInstance().getSharedPreferences(sharename, 0);Editor editor = user.edit();editor.putString(key, value);editor.commit();} public static void removeShare(String sharename,String key ) {SharedPreferences user = EdjApp.getInstance().getSharedPreferences(sharename, 0);Editor editor = user.edit();editor.remove(key);editor.commit();} //多键值存储public static void writegroup(String sharename,String key,String value) {SharedPreferences call = EdjApp.getInstance().getSharedPreferences(sharename, 0);String group = call.getString(key, "");if (group.indexOf(value) < 0) {String newgroup = group + "," + key;Editor editor = call.edit();editor.putString(key, newgroup);editor.commit();}}public static void removegroup(String sharename,String key) {SharedPreferences call = EdjApp.getInstance().getSharedPreferences(sharename, 0);String group = call.getString(key, "");String newgroup = group.replace("," + key, "");Editor editor = call.edit();editor.putString(key, newgroup);editor.commit();}/** * 储存单条对象 serviceInfo * @param per_name * @param key * @param vaule */public static void saveServicePre(String per_name,String key,Object vaule){SharedPreferences loginUserInfo = EdjApp.getInstance().getSharedPreferences(per_name, Context.MODE_APPEND);Editor preEd = null;if(loginUserInfo != null){preEd = loginUserInfo.edit();}if(preEd != null){if(vaule != null){ServiceInfo info1=(ServiceInfo)vaule;info1.setSaveTime(getTimeId());ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos=null; try { oos = new ObjectOutputStream(baos); oos.writeObject(info1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }String info = new String(Base64.encodeBase64(baos.toByteArray()));preEd.putString(key, info);}preEd.commit();}}/** * 读取对象集合 serviceInfo * @param per_name * @param oblist */public static <T> List<T> readAllServicePre(String per_name){ SharedPreferences loginUserInfo = EdjApp.getInstance(). getSharedPreferences(per_name, Context.MODE_APPEND); Map<String, ?> maps = loginUserInfo.getAll();//取出所有数据 List<T> oblist = new ArrayList<T>(); Iterator it = maps.values().iterator(); while(it.hasNext()){ String base64Str = (String) it.next(); byte[] base64Bytes = Base64.decodeBase64(base64Str .getBytes()); ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes); ObjectInputStream ois; try { ois = new ObjectInputStream(bais); T tempobj = (T) ois.readObject(); oblist.add(tempobj);// LoginUser loginUser = (LoginUser)tempobj; } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } ArrayList<ServiceInfo>tempserviceInfo = new ArrayList<ServiceInfo>(); tempserviceInfo.addAll((Collection<? extends ServiceInfo>) oblist); Comparator<ServiceInfo> ascComparator = new ServiceInfoComparator(); Collections.sort(tempserviceInfo, ascComparator);oblist.clear();oblist.addAll((Collection<? extends T>) tempserviceInfo); return oblist;}/** * 删除单条对象数据 * @param per_name * @param key */public static void removeObjectPre(String per_name,String key){SharedPreferences loginUserInfo = EdjApp.getInstance().getSharedPreferences(per_name, Context.MODE_APPEND);Editor preEd = null;if(loginUserInfo != null){preEd = loginUserInfo.edit();}preEd.remove(key);preEd.commit();}//当前时间为idpublic static long getTimeId() {Date data = new Date();long time=data.getTime();return time;}//---------------------------/** * 储存单条对象 * @param per_name * @param key * @param vaule */public static void saveObjectPre(String per_name,String key,Object vaule){SharedPreferences loginUserInfo = EdjApp.getInstance().getSharedPreferences(per_name, Context.MODE_APPEND);Editor preEd = null;if(loginUserInfo != null){preEd = loginUserInfo.edit();}if(preEd != null){if(vaule != null){ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos=null; try { oos = new ObjectOutputStream(baos); oos.writeObject(vaule); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }String info = new String(Base64.encodeBase64(baos.toByteArray()));preEd.putString(key, info);}preEd.commit();}}/** * 读取对象集合 * @param per_name * @param oblist */public static <T> List<T> readAllObjectPre(String per_name){ SharedPreferences loginUserInfo = EdjApp.getInstance(). getSharedPreferences(per_name, Context.MODE_APPEND); Map<String, ?> maps = loginUserInfo.getAll();//取出所有数据 List<T> oblist = new ArrayList<T>(); Iterator it = maps.values().iterator(); while(it.hasNext()){ String base64Str = (String) it.next(); byte[] base64Bytes = Base64.decodeBase64(base64Str .getBytes()); ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes); ObjectInputStream ois; try { ois = new ObjectInputStream(bais); T tempobj = (T) ois.readObject(); oblist.add(tempobj); } catch (StreamCorruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return oblist;}}
对象的排序,需要 根据设置的时间来算
import java.util.Comparator;public class ServiceInfoComparator implements Comparator<ServiceInfo> {@Overridepublic int compare(ServiceInfo object1, ServiceInfo object2) {// TODO Auto-generated method stubreturn Double.compare(object2.getSaveTime(), object1.getSaveTime());}}
这样的存取就能获得查看的历史记录,同时可以延伸到通话记录,收藏等
个人原创,转载请注明出处:http://blog.csdn.net/ma969070578/article/details/8995737
- Android 保存浏览记录 SharedPreTools
- 用cookie保存浏览记录
- 用cookie保存浏览记录
- cookie保存用户浏览记录
- android 浏览器浏览记录
- 用js操作cookie保存浏览记录
- 用js操作cookie保存浏览记录
- 用js操作cookie保存浏览记录
- 用js操作cookie保存浏览记录
- 使用Cookie实现保存商品浏览记录
- 使用cookie保存用户的浏览记录
- android ViewPager 图片浏览和保存图片
- 清除访问共享时保存的密码和浏览记录
- jquery+cookie+json保存浏览商品的记录
- Cookie:类似与保存用户浏览记录的例子
- 使用jsp实现对商品的浏览与保存浏览过的商品记录
- 浏览记录
- Android 屏幕相关知识——Android群英会浏览记录
- jQuery miniUI学习地址
- 页面局部刷新( ScriptManager 和 UpdatePanel)(转)
- 正则表达式
- HttpWatch工具简介及使用
- VB 总结
- Android 保存浏览记录 SharedPreTools
- tamarin中interpter的一点分析
- iOS开发资源:Helios、THLabel以及AGi18n等
- Effective C++ 读书笔记之Part8.Customizing new and delete
- datetimepicker标签
- 第四章 Django模板系统
- 勇敢的跟孩子谈钱:生活中的财商课
- 如何修改表空间数据文件路径
- php+mysql计算某个已知经纬度周围几公里数据查询处理方法