小部件中的Android位图回收

时间:2016-07-28 10:16:03

标签: android bitmap recycle

我的小部件上的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)字节。

但我找不到解决方案......

0 个答案:

没有答案