SharedPreferences存储

来源:互联网 发布:淘宝买家秀男内裤图片 编辑:程序博客网 时间:2024/05/19 13:18

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();

 

注意:

访问接口和优先修改数据,并由getSharedPreferences(String,int)返回数据,为了统一设置参数,有一个单例类供所有的客户 端共享.修改参数必须通过一个SharedPreferences.Editor对象,在存储他们时,以确保参数值有统一的状态和控制
目前此类不支持多线程,