• Android Application 创建全局变量


     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();
    	}
    	
    	//当前时间为id
    	public 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> {
    
    	@Override
    	public int compare(ServiceInfo object1, ServiceInfo object2) {
    		// TODO Auto-generated method stub
    
    		return Double.compare(object2.getSaveTime(), object1.getSaveTime());
    	}
    
    }

    这样的存取就能获得查看的历史记录,同时可以延伸到通话记录,收藏等

    个人原创,转载请注明出处:http://blog.csdn.net/ma969070578/article/details/8995737 

  • 相关阅读:
    马云演讲:给自己一个梦想,给自己一个承诺,给自己一个坚持!
    转:如何成为一个伟大的开发者
    数据挖掘之七种常用的方法
    windows命令行
    100万亿意味着什么?
    ubuntu环境配置
    Ubuntu runlevel修改
    Ubuntu 用户及组管理
    Git学习笔记
    Git详解之三 Git分支
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3109174.html
Copyright © 2020-2023  润新知