我正在我的应用程序中的Google Play控制台上获取每日基础崩溃报告。
崩溃日志是:
java.lang.IllegalStateException:
at android.graphics.Bitmap.checkRecycled (Bitmap.java:394)
at android.graphics.Bitmap.writeToParcel (Bitmap.java:1599)
at miui.security.ISecurityManager$Stub$Proxy.saveIcon (ISecurityManager.java:1505)
at miui.security.SecurityManager.saveIcon (SecurityManager.java:275)
at com.miui.internal.os.Native.invoke (Native.java)
at miui.reflect.Method.invoke (Method.java:120)
at miui.content.res.ThemeRuntimeManager.saveIconInner (ThemeRuntimeManager.java:185)
at miui.content.res.ThemeRuntimeManager.-wrap1 (SourceFile)
at miui.content.res.ThemeRuntimeManager$ThemeServiceThread.run (ThemeRuntimeManager.java:159)
我在我的应用程序中不使用任何recycle bitmap
。我不会在bitmap
中包含任何intent
。所以,无法找到崩溃的位置。如果任何机构知道如何获取错误位置/行,请帮助。
我正在使用Picasso加载已安装的应用程序图标,如下所示:
Picasso
.with(activity.getApplicationContext())
.load(IconRequestHandler.getUri(appsListItems.get(position).getPackageName()))
.fit()
.error(R.drawable.ic_default)
.placeholder(R.drawable.ic_default)
.into(holder.icon);
答案 0 :(得分:0)
调查之后,我发现问题出在调用BitmapDrawable.getBitmap
方法。对我来说,将Drawable转换为Bitmap的最简单解决方案是:
Drawable d = packageManager.getApplicationIcon("com.example.appPackage");
Bitmap b = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b);
d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
d.draw(canvas);
在小米设备上工作正常。