他に、アクティビティから効果的にビットマップのリストを渡す方法は?

アミン:

私は3つのリスト持っているMat Opencvオブジェクトを、私は他の中にアクティビティから、このリストを渡す必要がありますAndroid

私はそれらの変換ので、私は、どのような活動の間にマットのリストを共有するには見当もつかないMatビットマップにオブジェクトを、今私は、ビットマップに対処する必要があります。

私は知っているBitmapクラスが実装をParcelable私が使用して、デフォルトではputParcelableArrayList、このように

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

しかし、私はApplicationちょうどビットマップオブジェクトが大きすぎるための方法は、私はこれが起こっていると思うことを暗くし、滞在になります。

あなたはこれを実現するためのソリューションを提案することはできますか?

92AlanC:

あなたは、実行時にのみ固執するつもりそれの何かなら、私はあなたがシングルトンオブジェクトにそのリストを格納し、あなたの次の活動でそれからの読み取りをお勧めしたいです。

それはあなたの問題を解決するためにかなり簡単、簡単で、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
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=232934&siteId=1