SharedPreferences存储类效率分析
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存,它是什么样的处理方式呢?
SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最 终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。
SharedPreferences 的用法
2个activity 之间的数据传递除了可以他通过intent来传递,还可以使用SharedPreferences来共享数据的方式
SharedPreferences 用法很简单.
存储数据操作
Editor sharedata = getSharedPreferences("config", Context.MODE_PRIVATE).edit();
sharedata.putString("phone",“13877598445);
sharedata.commit();
读取数据操作
SharedPreferences sharedata = getSharedPreferences("config", 0);
String = ServerNumer = sharedata.getString("phone", null);
有了上面数据读取的代码,这里面的就容易理解了,只是别忘了最后的commit();
但是此种用法用于简单的数据存储,但是遇到复杂的数据可以将数据进行序列化后用base64进行加密后再进行存储。
首先可以把数据存储在一个类的对象里,但是类必须继承Serializable才能序列化,同时注意类里不能包含数组,vector等变量,否则序列化时会出异常。
STEP1:
public static class DownSMS implements Serializable
{
DownSMS()
{
}
String dowmName;
boolean bResult;
boolean bRead;
public void decode(string,DowmSMS)
{
}
}
STEP2:序列化后保存
SmsWpki.DownSMS DownSMS = new SmsWpki.DownSMS();
m_SmsWpki.decode(inData, DownSMS);//第三方程序数据处理
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(DownSMS);
Base64 = new String(Base64Encoder.encode(baos.toByteArray()));
step3:保存
Editor sharedata = getSharedPreferences("data", Context.MODE_APPEND|Context.MODE_WORLD_WRITEABLE).edit();
sharedata.putString("str",Base64);
sharedata.commit();
以上为保存操作,下位读取操作
STEP1:反序列化
Editor sharedataedit=getSharedPreferences("data",Context.MODE_APPEND|Context.MODE_WORLD_WRITEABLE).edit();
String body = sharedataedit.getString(str,null);
byte[] base64Bytes = Base64Encoder.decode(body);
ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
SmsWpki.DownSMS DownSMS = (SmsWpki.DownSMS) ois.readObject();
注意:
目前此类不支持多线程,