else if(v.equals(findVIEwByID(R.ID.ok_button))){// saveImage(); topbar.setVisibility(VIEw.GONE); menubar.setVisibility(VIEw.GONE); bottom.setVisibility(VIEw.GONE); VIEw s = ml.getRootVIEw(); s.setDrawingCacheEnabled(true); Bitmap b = s.getDrawingCache(); Bitmap watermarkimage=b; s.setVisibility(VIEw.GONE); Log.e("ok","ok"); Intent i=new Intent(CameraActivity.this,Update.class); i.putExtra("data",watermarkimage); startActivity(i); finish(); }
我保存了整个活动以获取图像.通过使用以下代码,我得到了位图
VIEw s = ml.getRootVIEw(); s.setDrawingCacheEnabled(true); Bitmap b = s.getDrawingCache();
当我尝试将此位图发送到另一个活动时,我收到此错误
12-05 17:58:38.700: E/AndroIDRuntime(10590): FATAL EXCEPTION: main12-05 17:58:38.700: E/AndroIDRuntime(10590): java.lang.IllegalStateException: Can't parcel a recycled bitmap12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.graphics.Bitmap.checkRecycled(Bitmap.java:210)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.graphics.Bitmap.writetoParcel(Bitmap.java:960)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.os.Parcel.writeParcelable(Parcel.java:1151)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.os.Parcel.writeValue(Parcel.java:1070)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.os.Parcel.writeMAPInternal(Parcel.java:488)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.os.Bundle.writetoParcel(Bundle.java:1552)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.os.Parcel.writeBundle(Parcel.java:502)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.content.Intent.writetoParcel(Intent.java:5492)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1341)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.app.Instrumentation.execStartActivity(Instrumentation.java:1374)12-05 17:58:38.700: E/AndroIDRuntime(10590): at androID.app.Activity.startActivityForResult(Activity.java:2873)解决方法 尝试复制或克隆此位图并包裹该副本.
Bitmap watermarkimage = b.copy(b.getConfig(),true);
我猜测getDrawingCache返回的数据与b和watermarkimage共享.所以也许setVisible to Gone导致它回收.
总结以上是内存溢出为你收集整理的android – Cant parcel一个回收的位图错误全部内容,希望文章能够帮你解决android – Cant parcel一个回收的位图错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)