Android 在活动之间共享大量数据

Android 在活动之间共享大量数据,android,parcelable,Android,Parcelable,我有一个parcelable类正在尝试发送一些相机预览信息。因此,我需要将多个字节[]数据从一个活动发送到另一个活动。我正在使用Parcelable与此代码: public class CameraResult implements Parcelable { private byte[] imagesList; public CameraResult() {} @Override public int describeContents() {

我有一个parcelable类正在尝试发送一些相机预览信息。因此,我需要将多个字节[]数据从一个活动发送到另一个活动。我正在使用
Parcelable
与此代码:

public class CameraResult implements Parcelable
{   
    private byte[] imagesList; 

    public CameraResult() {}

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeByteArray(imagesList);
    }

    public byte[] getImageList() {
        return imagesList;
    }

    public void setImageList(byte[] results) {
        this.imagesList = results;
    }


public static final Parcelable.Creator<CameraResult> CREATOR = new Creator<CameraResult>() {

    @Override
    public CameraResult[] newArray(int size) {
        return new CameraResult[size];
    }

    @Override
    public CameraResult createFromParcel(Parcel source) {
        CameraResult toReturn = new CameraResult();

        int imageListSize = source.readInt();
        if (imageListSize != 0)
        {
            byte[] tempImageList = new byte[imageListSize];
            source.readByteArray(tempImageList);
            toReturn.setImageList(tempImageList);
        }

      return toReturn;
    }
};
}
public类CameraResult实现可包裹
{   
专用字节[]图像列表;
公共摄影机结果(){}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目标写入字节数组(ImageList);
}
公共字节[]getImageList(){
返回图像列表;
}
public void setImageList(字节[]结果){
this.imagesList=结果;
}
公共静态最终包裹。创建者=新创建者(){
@凌驾
公共摄影机结果[]新数组(整数大小){
返回新相机结果[大小];
}
@凌驾
公共摄影机结果createFromParcel(地块源){
CameraResult toReturn=新CameraResult();
int imageListSize=source.readInt();
如果(imageListSize!=0)
{
字节[]tempImageList=新字节[imageListSize];
source.readByteArray(tempImageList);
toReturn.setImageList(tempImageList);
}
回归回归;
}
};
}
这个
Parcelable
类运行良好。但当我尝试发送更多数据时,通信
Intent
不起作用,因为我超过了最大数据大小

我读了很多书,并提出了一些解决问题的方法。但是我想知道,是否可以使用
Parcelable
发送更多的数据,如果不可以,上面提到的哪种方法是最合适的


谢谢。

使用单例或静态类存储共享数据


编辑:

根据我的经验,这是做这件事不那么痛苦的方式,但是,在你发布的第一个链接上,它还说:

有几种建议可以通过定义全球范围来实现这一目标 变量、静态字段、成员变量等进行了调整 为了得到干净的封装代码,我决定实现它 使用javaenum

它使用
enum
作为数据持有者:

private enum DataHolder {
    INSTANCE;

    private List<Object> mObjectList;

    public static boolean hasData() {
        return INSTANCE.mObjectList != null;
    }

    public static void setData(final List<Object> objectList) {
        INSTANCE.mObjectList = objectList;
    }

    public static List<Object> getData() {
        final List<Object> retList = INSTANCE.mObjectList;
        INSTANCE.mObjectList = null;
        return retList;
    }
}
私有枚举数据持有者{
实例;
私人名单;
公共静态布尔hasData(){
return INSTANCE.mObjectList!=null;
}
公共静态void setData(最终列表objectList){
INSTANCE.mObjectList=objectList;
}
公共静态列表getData(){
最终列表retList=INSTANCE.mObjectList;
INSTANCE.mObjectList=null;
返回列表;
}
}

我个人更喜欢实现一个单例类,因为在另一个类中代码看起来更整洁(我对此有点着迷),但基本上是一样的。任何其他解决方案都可以。

作为建议,为什么不在一个常见活动中使用2个片段?这样,您就不能将该活动用于此表单通信,也不会涉及任何发送。\n由于某些原因,片段不可能被丢弃。因此,您推荐我链接的解决方案之一,没有办法实现共享大数据量的
Parcelable
?这是一个正确的答案,在活动、片段或视图中存储数据不是一个好的解决方案