android基础学习--->Android(安卓)SharedPreferences存储对象和图片(Android(安卓)SDK2.2)2
上一篇文章是写2.2之前的SharedPreferences存储对象和图片的使用方法。
本篇文章简单说下2.2之后的使用方法。
由于android SDK2.2提供Base64编码和解码库,所以我们不需要引包。
http://developer.android.com/reference/android/util/Base64.html可以参考官方资料
特别提醒:存储的类不能为activity的内部类,测试过了
以下是在OnStop函数中存储Product对象的代码
protected void onStop() {
try {
Product product = new Product();
product.id = etProductID.getText().toString();
product.name = etProductName.getText().toString();
product.price = Float.parseFloat(etProductPrice.getText()
.toString());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(product);
mySharedPreferences = getSharedPreferences("base64",
Activity.MODE_PRIVATE);
String productBase64 = new String(
Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT));
SharedPreferences.Editor editor = mySharedPreferences.edit();
editor.putString("product", productBase64);
editor.commit();
oos.close();
} catch (Exception e) {
setTitle("error:" + e.getMessage());
}
super.onStop();
}
下面是读取product对象并写数据的代码段
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etProductID = (EditText) findViewById(R.id.etProductID);
etProductName = (EditText) findViewById(R.id.etProductName);
etProductPrice = (EditText) findViewById(R.id.etProductPrice);
byte[] base64Bytes;
ByteArrayInputStream bais;
try
{
mySharedPreferences = getSharedPreferences("base64",
Activity.MODE_PRIVATE);
String productBase64 = mySharedPreferences.getString("product", "");
base64Bytes = Base64.decode(productBase64, Base64.DEFAULT);
bais = new ByteArrayInputStream(base64Bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
Product product = (Product) ois.readObject();
etProductID.setText(product.id);
etProductName.setText(product.name);
etProductPrice.setText(String.valueOf(product.price));
ois.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
更多相关文章
- Android中对媒体的使用
- Android中数据存储——SharedPreferences存储数据
- Android(安卓)Handler机制 - handleMessage究竟在哪个线程执行
- Android(安卓)性能优化之内存泄漏检测以及内存优化(中)
- android 上 webkit js 扩展之全局本地对象实现步骤
- android 常用控件的使用 TextView EditTextView
- 进击的Android注入术《五》
- Android(安卓)Drawable
- Android学习路线总结,绝对干货