- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我一直有这个问题,我不知道该怎么办。
我用过this库,当我得到裁剪的图像时,我将其保存在静态变量中并移至下一个 Activity 。当我到达下一个 Activity 时,我引用该静态变量来获取位图并尝试缩小它。但它给了我错误。
这就是我正在做的事情。
public void buttonCropClick(View view) throws IOException
{
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache(true);
Snapshot.CroppedBitmap = imageView.getDrawingCache(true);
imageView.setDrawingCacheEnabled(false);
startActivity(new Intent(this,RecommendationInfo.class));
}
在 RecommendationInfo
类中,我在以下行中获取位图 Snapshot.CroppedBitmap = imageView.getDrawingCache(true);
然后将此位图保存在静态变量中我在下一个 Activity 中引用它并将其传递给以下函数。
public static Bitmap scaleDown(Bitmap realImage,boolean filter) {
float maxImageSize = HeightToSet;
float ratio = Math.min(
(float) maxImageSize / realImage.getWidth(),
(float) maxImageSize / realImage.getHeight());
int width = Math.round((float) ratio * realImage.getWidth());
int height = Math.round((float) ratio * realImage.getHeight());
// Error here
Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width,height, filter);
return newBitmap;
}
我已经尝试调用 bitmap.recycle()
。为什么我会遇到这个问题,我该怎么做才能解决它?这是我的日志。
07-14 03:09:43.713: E/AndroidRuntime(19653): FATAL EXCEPTION: main
07-14 03:09:43.713: E/AndroidRuntime(19653): java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@4059b8b8
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Canvas.throwIfRecycled(Canvas.java:955)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Canvas.drawBitmap(Canvas.java:1012)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Bitmap.createBitmap(Bitmap.java:462)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:349)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.Libraries.Snapshot.scaleDown(Snapshot.java:42)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.androidtestproject.RecommendationInfo.SetRecommendationValues(RecommendationInfo.java:195)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.androidtestproject.RecommendationInfo.access$5(RecommendationInfo.java:183)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.example.androidtestproject.RecommendationInfo$1.onClick(RecommendationInfo.java:154)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.view.View.performClick(View.java:2552)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.view.View$PerformClick.run(View.java:9229)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.os.Handler.handleCallback(Handler.java:587)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.os.Handler.dispatchMessage(Handler.java:92)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.os.Looper.loop(Looper.java:138)
07-14 03:09:43.713: E/AndroidRuntime(19653): at android.app.ActivityThread.main(ActivityThread.java:3701)
07-14 03:09:43.713: E/AndroidRuntime(19653): at java.lang.reflect.Method.invokeNative(Native Method)
07-14 03:09:43.713: E/AndroidRuntime(19653): at java.lang.reflect.Method.invoke(Method.java:507)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
07-14 03:09:43.713: E/AndroidRuntime(19653): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
07-14 03:09:43.713: E/AndroidRuntime(19653): at dalvik.system.NativeStart.main(Native Method)
07-14 03:09:45.515: E/TAG(20039): End of input at character 0 of
最佳答案
在将位图传递给静态变量之前复制位图。
Snapshot.CroppedBitmap = imageView.getDrawingCache(true);
到
Snapshot.CroppedBitmap = Bitmap.createBitmap(imageView.getDrawingCache(true));
当不再需要时,很有可能 imageView 正在回收其绘图缓存作为良好做法。通过将其复制出来,您可以保留对 ImageView 丢弃的位图的引用。只需复制一份您可以自己管理的内容!
关于android - Canvas : trying to use a recycled bitmap android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17634830/
在标题为“Managing Bitmap Memory”的文档中,您可以找到以下声明: Caution: You should use recycle() only when you are sure
另一个Recycler View里面有一个Recycler View,都需要垂直滚动。外部 Recycler View 可以正确滚动,但内部 Recycler View 不能。 代码如下: Linea
几天前,我们在 Play 商店发布了一个应用程序,它处理高质量的位图并且完全是关于编辑它们。 当我们意识到 20% 的设备出现内存不足错误时,一切进展顺利。所以我们检查了我们的代码,发现 Androi
我有两个 Activity :MainActivity 和 Activity2。 MainActivity 只需通过 Intent 打开第二个。 要从 Activity2 返回到 MainActivi
我想在 Jetpack compose 中创建以下布局。 我尝试在垂直可滚动框中创建两个列表,但这是不可能的,因为我得到了这个错误: “java.lang.IllegalStateException:
我在 xml 中使用以下代码生成两个 RadioButtons,它们之间有分隔线: 这工作正常,并且在 ViewPager
我使用以下 xml 可绘制对象作为我的 recyclerview 列表项的背景。 touch_selector.xml touch_selector_base.xml
我进行了很多搜索,我所做的是创建一个项目列表,其中包含简单的数字并具有选中和未选中的复选框,因此当我快速点击列表时,它会崩溃并生成 ArrayIndexOutOfBound Exception 所以我
我正在尝试添加一些点击动画 as shown here在我的回收者看来,但没有成功。这是我的一些代码。 在我的 Activity 中 @Override protected void onCreate
我在回收站 View 中有一个歌曲列表。我需要更改之前播放的行的背景颜色。 所以在我的onBindViewHolder我有这个。 if(activeAudioIndex
对于房间分贝的目的。我想在 Recycler View 中运行一些协程。 必要的挂起函数作为类参数处理: class RecyclerAdapter (private val exist : su
我想创建一个列表,例如 To-Do List。 在此用户可以选择/取消选择一个项目,根据他们的优先级重新排序。在当前情况下,我可以使用 为他们提供上述所有功能。 ItemTouchHelper.Sim
我必须与 IBinder 合作s 和 Parcel s。我已经浏览了所有 IBinder , Binder , 和 Parcel文档,找不到任何关于何时调用 Parcel.recycle 的内容(我也
我正在尝试将回收站 View 滚动到底部,但问题是我的行项目高度是否大于滚动停止在项目顶部的屏幕高度。是否可以手动滚动到回收站 View 的最底部? recyclerView.scrollToPosi
我的 Activity 有一个谷歌的 ViewModel 来获取一些模型项目。然后将这些项目转换为 RecyclerView 的适配器项目。一个 RecyclerView 还支持多种类型的适配器项。
我目前正在开发一个 Azure 项目,该项目可在本地使用模拟器资源 100% 运行。我现在正在尝试部署辅助角色,但遇到了一个问题,我不确定如何解决。 在我的 Azure 门户中部署辅助角色后,这两个实
我正在为我的回收站 View 项目使用约束布局。为了动画(展开/折叠)它们,我使用约束集动画。开场动画在所有项目上运行良好。关闭动画也运行良好,但是当关闭动画在不是最后一个的项目上开始时,所有项目在动
我一直在尝试让自定义Recycler View 适配器工作。我不太明白为什么它不起作用。我觉得奇怪的是自定义适配器的代码不执行(因为当我在那里放置断点时它不会中断)并且我确定我绑定(bind)了自定义
我想使用 Firebase 制作一个杂务应用程序,它有 2 个输入:描述和类。每当我运行该应用程序时,显示的屏幕都是空白的(标题除外)没有可能显示问题的明确指示或错误。这些是最富有成果的 logCat
我想使用 Firebase 制作一个杂务应用程序,它有 2 个输入:描述和类。每当我运行该应用程序时,显示的屏幕都是空白的(标题除外)没有明确的指示或错误可能显示问题。这些是最富有成果的 logCat
我是一名优秀的程序员,十分优秀!