在打开新活动时(通过传递大量数据),我得到TransactionTooLargeException
,但是我引用了很少的解决方案链接,最后我得到了this link的解决方案,而我选择了解决方案3(减少了api水平)。它对我有用。
但是我想知道是否有更方便的方法来实现此功能,或者在这种情况下我应该怎么做。
答案 0 :(得分:0)
我以前遇到过这个问题,我不得不在两者之间进行选择
1-从我想要传递的对象中删除不必要的数据(在我的情况下,该数组具有目标Activity不需要的充满数据的数组)。
2-实施单例传递数据。假设您要从活动A转到活动B:
创建PassDataSingleton.class:
public class PassDataSingleton {
private static PassDataSingleton instance;
private ObjectTypeYouWantToPassAround object;
public static PassDataSingleton getInstance() {
return instance;
}
public void setObjectIWantToPassAround(ObjectTypeYouWantToPassAround object){
this.object = object;
}
public ObjectTypeYouWantToPassAround getObjectIWantToPassAround(){
return this.object;
}
}
在活动A上,在开始活动B之前,请致电
PassDataSingleton.getInstance().setObjectIWantToPassAround(yourObject);
在活动B上,您获得了对象:
PassDataSingleton.getInstance().getObjectIWantToPassAround();
PS:
答案 1 :(得分:0)
您可以将数据存储在静态字段中,然后从任意位置访问它,而不是在活动之间发送大数据。交易限制为1 mb,几乎没有任何数据交换。 或者,您也可以将其存储在用户数据文件夹中,或将sdcard作为临时文件存储在当前活动中,然后从新活动中读取该文件,然后将其删除。