为了账号安全,请及时绑定邮箱和手机立即绑定

如何将位图列表有效地从一个活动传递到另一个活动?

如何将位图列表有效地从一个活动传递到另一个活动?

浮云间 2022-09-21 16:46:58

我有一个包含 3 个对象的列表,我需要将此列表从一个活动传递到 另一个活动。MatOpencvAndroid

我不知道如何在活动之间共享此垫子列表,因此我将这些对象转换为位图,现在我必须处理位图。Mat

我知道该类默认实现,所以我像这样使用BitmapParcelableputParcelableArrayList

Intent intent = new Intent(InputProcessingActivity.this, CompareActivity.class);
intent.putParcelableArrayListExtra("", mats);
startActivity(intent);

但是我只是变得黑暗并保持这种状态,我认为这是因为位图对象太大而发生这种情况。Application

您能提出一个解决方案来实现这一目标吗?


查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1469条经验 获得超4个赞

如果您打算仅在运行时保留该列表,我建议您将该列表存储在单例对象中,然后在下一个活动中读取它。


这是一种非常简单,直接且CPU / IO友好的方式来解决您的问题。


例:


public class BitmapDTO {


    private static BitmapDTO instance;


    public static BitmapDTO getInstance() {

        if (instance == null)

            instance = new BitmapDTO();

        return instance;

    }


    private List<Bitmap> bitmaps;


    private BitmapDTO() { }


    public void setBitmaps(List<Bitmap> bitmaps) {

        this.bitmaps = bitmaps;

    }


    public List<Bitmap> getBitmaps() {

        return bitmaps;

    }


}

源活动:


BitmapDTO.getInstance().setBitmaps(myBitmaps);

Intent intent = new Intent(InputProcessingActivity.this, CompareActivity.class);

startActivity(intent);

最后,关于您的目标活动:


private List<Bitmap> myBitmaps;


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.my_layout);

    myBitmaps = BitmapDTO.getInstance().getBitmaps();

    // Do your stuff

}


查看完整回答
反对 回复 5天前
?
慕妹3146593

TA贡献1487条经验 获得超9个赞

将 s 保存到某些文件,并通过意图传递文件的路径。Bitmap



查看完整回答
反对 回复 5天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信