Android Application 建立全域變數

來源:互聯網
上載者:User
 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 {//單KVStore for Redis----------------------------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();} //多KVStore for Redispublic 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 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.