如何在活动之间传递ArrayList <Bitmap>

Ric*_*rez 2 android arraylist

我有一个ArrayList<Bitmap>使用该方法填充的,getBitmapFromAsset()并希望使用Bundle通过intent传递它.但是它允许我传递其他ArrayLists,如ArrayList<String>:

Intent intent = new Intent(myClass.this, Rclass.class);  
Bundle bundle = new Bundle();    
bundle.putStringArrayList("names", (ArrayList<String>) names);  
intent.putExtras(bundle);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

但我不知道如何传递Bitmap类型的ArrayList,因为我在Bundle中没有看到该选项.有关如何执行此操作的任何想法?

azg*_*fer 7

将位图本身从一个活动传递到另一个活动是非常低效的内存.如果您的位图是小尺寸图标可能没问题,但如果它们是大位图,则可能会遇到内存不足异常.

您是否考虑过重构这一点,例如使用具有位图ID(或资产名称)的HashMap的单例到位图本身的WeakReference.这个单例,我们称之为BitmapHelper,如果尚未加载或已被垃圾收集器释放,它将自动从资产重新加载位图.

拥有此BitmapHelper后,将字符串数组中的位图ID /资产名称传递给另一个活动.从其他活动中,您只需从BitmapHelper访问位图即可.