方法一:将需要传递的数据写在临时文件或者数据库中,再跳转到另外一个组件的时候再去读取这些数据信息,这种处理方式会由于读写文件较为耗时导致程序运行效率较低;
方法二:将需要传递的数据信息封装在一个静态的类中。
方式二的代码:
以后我们在要传递大数据时,则可以用DataHolder.setData(name, value)进行传递,然后在目标Activity中使用DataHolder.getData(name)进行获取。
我们自定义了一个静态类DataHolder,并且设置setData和getData方法,而且考虑到极端的情况,有可能传递的对象的内存是极其大的,所以为了不造成内存泄漏,我们将要传递的对象构造成一个弱引用保存到该静态类。下面是DataHolder的代码:
public class DataHolder {
private Map dataList = new HashMap();
private static volatile DataHolder instance;
public static DataHolder getInstance() {
if(instance==null) {
synchronized(DataHolder.class) {
if(instance==null) {
instance = new DataHolder();
}
}
}
return instance;
}
public void setData(String key, Object o) {
WeakReference value =new WeakReference(o);
dataList.put(key, value);
}
public Object getData(String key) {
WeakReference reference =dataList.get(key);
if(reference !=null) {
Object o = reference.get();
return o;
}
return null;
}
}