android – Cant parcel一个回收的位图错误

android – Cant parcel一个回收的位图错误,第1张

概述我正在尝试将图像添加到相机surfaceview并尝试使用以下代码获取该图像. else if(v.equals(findViewById(R.id.ok_button))){// saveImage(); topbar.setVisibility(View.GONE); menubar.setVis 我正在尝试将图像添加到相机surfacevIEw并尝试使用以下代码获取该图像.

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一个回收的位图错误所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1129151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存