我的小部件上的bitmap
每秒更新一次。大约20秒后,我得到了这个例外:
java.lang.IllegalArgumentException: RemoteViews for widget update exceeds maximum bitmap memory usage (used: 12572000, max: 12441600)
我认为这是因为没有bitmap
回收?
***编辑***
我现在回收这个问题/答案中提到的位图:Redraw Widget every second
但是会发生此错误:
java.lang.IllegalStateException: Can't parcel a recycled bitmap
我的已更新代码:
Bitmap bitmap, lastBitmap;
private static void updateTime(RemoteViews views, Context context, AppWidgetManager appWidgetManager, int appWidgetId){
[...]
bitmap = [...] //here i create the bitmap
views.setImageViewBitmap(R.id.image_countdown, bitmap);
try {
appWidgetManager.updateAppWidget(appWidgetId, views);
}
catch (IllegalArgumentException e){
e.printStackTrace();
}
if(lastBitmap != null) {
lastBitmap.recycle();
lastBitmap = null;
}
lastBitmap = bitmap;
}
每秒都会调用{p> updateTime
。
我知道
RemoteViews对象使用的总位图内存不能超过填充屏幕1.5倍所需的内存,即。 (屏幕宽x屏高x 4 x 1.5)字节。
但我找不到解决方案......