android中通过SharedPreferences进行对象的存储
来源:互联网 发布:司马南被夹头 知乎 编辑:程序博客网 时间:2024/05/17 04:19
我们知道SharedPreferences只能保存简单类型的数据,例 如,String、int等。如果想用SharedPreferences存取更复杂的数据类型(类、图像等),就需要对这些数据进行编码。我们通常会将 复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中。
注:Base 64是apathe的开源jar包(commons-codec-1.4.jar),需要下载点击打开链接
package hhf.save;
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.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.codec.binary.Base64;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
/**
* SharedPreferences中写入、读取对象操作
* @author huanghaifeng
*
*/
public class SaveObjectActivity extends Activity {
/** Called when the activity is first created. */
private SharedPreferences mySharedPreferences;
private List<Map<String,Object>> wordList = new ArrayList<Map<String,Object>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mySharedPreferences = getSharedPreferences("new_word", Activity.MODE_WORLD_READABLE);
saveObjectToShared();
readObjectFromShared();
}
/**
* 将对象保存到SharedPreferences
*/
private void saveObjectToShared(){
Map<String,Object> map = new HashMap<String, Object>();
map.put("name", "张三");
map.put("age", "19");
wordList.add(map);
map = new HashMap<String, Object>();
map.put("name", "李四");
map.put("age", "29");
wordList.add(map);
ByteArrayOutputStream baos = new ByteArrayOutputStream(3000);
ObjectOutputStream oos=null;
try {
oos = new ObjectOutputStream(baos);
oos.writeObject(wordList);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将Product对象放到OutputStream中
// 将Product对象转换成byte数组,并将其进行base64编码
String newWord = new String(Base64.encodeBase64(baos.toByteArray()));
SharedPreferences.Editor editor = mySharedPreferences.edit();
// 将编码后的字符串写到base64.xml文件中
editor.putString("newWord", newWord);
editor.commit();
}
/**
* 从SharedPreferences中读取对象
*/
private void readObjectFromShared(){
String wordBase64 = mySharedPreferences.getString("newWord", "");
// 对Base64格式的字符串进行解码
byte[] base64Bytes = Base64.decodeBase64(wordBase64 .getBytes());
ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);
ObjectInputStream ois;
try {
ois = new ObjectInputStream(bais);
// 从ObjectInputStream中读取Product对象
// AddNewWord addWord= (AddNewWord ) ois.readObject();
List<Map<String,Object>> result = (List<Map<String, Object>>) ois.readObject();
System.out.println("result = " + result);
} 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();
}
}
}
- android中通过SharedPreferences进行对象的存储
- android中通过SharedPreferences进行对象的存储
- android中通过SharedPreferences进行对象的存储
- android中使用SharedPreferences进行数据存储的操作方法
- Android中使用SharedPreferences进行数据存储
- Android将对象存储到SharedPreferences中
- Android 中使用SharedPreferences存储通用对象
- Android将对象存储到SharedPreferences中
- AES加密进行Android的SharedPreferences存储
- AES加密进行Android的SharedPreferences存储
- android SharedPreferences 存储对象
- android SharedPreferences 存储对象
- android SharedPreferences 存储对象
- android SharedPreferences 存储对象
- 利用SharedPreferences进行对象存储
- Android通过反射打造可以存储任何对象的万能SharedPreferences
- Android通过反射打造可以存储任何对象的万能SharedPreferences
- android中通过文件 SharedPreferences Sqlite ContentProvider存储数据
- UML--UML简介
- 《重构改善既有代码的设计》之重构列表--大型重构
- UML--静态建模:用例和用例图
- nginx purge更新缓存404错误
- UML--静态建模:类和类图
- android中通过SharedPreferences进行对象的存储
- Web App和Native App 谁将是未来
- 浅谈HTTP中Get与Post的区别
- UML--动态建模
- android中shape的使用
- Android原理揭秘系列之View、ViewGroup
- Android进程与线程详解
- view的刷新
- android多线程