我的应用在尝试显示位图时遇到以下异常:
java.lang.RuntimeException: Could not write bitmap to parcel blob.
at android.graphics.Bitmap.nativeWriteToParcel(Native Method)
at android.graphics.Bitmap.writeToParcel(Bitmap.java:1296)
at android.widget.RemoteViews$BitmapCache.writeBitmapsToParcel(RemoteViews.java:839)
at android.widget.RemoteViews.writeToParcel(RemoteViews.java:2347)
at com.android.internal.appwidget.IAppWidgetService$Stub$Proxy.updateAppWidgetIds(IAppWidgetService.java:521)
at android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:364)
at android.appwidget.AppWidgetManager.updateAppWidget(AppWidgetManager.java:431)
你知道为什么会出现这个错误吗?它仅存在于4.2。 我不知道为什么以及何时发生,我只在报告中得到了这些例外。
谢谢, 的Tamas
答案 0 :(得分:2)
我想我找到了答案。如果我检查jni / android / graphics / Bitmap.cpp,那么我可以看到:
size_t size = bitmap-> getSize();
android::Parcel::WritableBlob blob;
android::status_t status = p->writeBlob(size, &blob);
if (status) {
doThrowRE(env, "Could not write bitmap to parcel blob.");
return false;
}
似乎问题在于位图大小而不是位图本身。
如果无法分配内存,writeBlob函数可以返回NO_MEMORY状态。
所以我想如果用户设置的位图太大,那么就会失败。