Android 小部件中的图标有时会断开/变黑

Android 小部件中的图标有时会断开/变黑,android,android-widget,imageview,Android,Android Widget,Imageview,我实现了一个小部件,它总体上运行得很好。然而,我不时从用户那里得到报告,小部件中的一些图像被破坏(确切地说是黑色的)。我包括了一个设备的屏幕截图,它似乎正好解释了问题。所有图标都以PNG格式驻留在可绘制hdpi资源文件夹中 这种行为的可能解释是什么 以下是我如何将图像分配给小部件的代码片段: public static void updateWidgetData(RemoteViews view, String id, Integer idWidget, String background, S

我实现了一个小部件,它总体上运行得很好。然而,我不时从用户那里得到报告,小部件中的一些图像被破坏(确切地说是黑色的)。我包括了一个设备的屏幕截图,它似乎正好解释了问题。所有图标都以PNG格式驻留在可绘制hdpi资源文件夹中

这种行为的可能解释是什么

以下是我如何将图像分配给小部件的代码片段:

public static void updateWidgetData(RemoteViews view, String id, Integer idWidget, String background, String showTitle, String titleAlpha, Context context) {
    ...
    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, AndroidUtil.getLowMemoryBitmapOptions());
    view.setImageViewBitmap(idWeatherIcon, bitmap));
    ...
}

public static BitmapFactory.Options getLowMemoryBitmapOptions() {   
    /** BITMAP FACTORY OPTIONS **/
    BitmapFactory.Options bitmapOpts = new BitmapFactory.Options();     
    bitmapOpts.inPreferredConfig = Bitmap.Config.RGB_565;       
    bitmapOpts.inPurgeable = true;
    bitmapOpts.inInputShareable  = true;
    /** END BITMAP FACTORY OPTIONS **/
    return bitmapOpts;
}


黑色图标出现在随机位置,因此示例只是发生错误的一种可能性

很遗憾,我无法发表评论,但我想建议检查以下内容:

  • AndroidUtil.getLowMemoryBitmapOptions()
    在这个Motorola上以及在它应该显示的设备上时,会返回BitmapFactory的哪些选项

  • 检查所有图像,一个或多个图像可能会有所不同(可能是alpha通道/透明度?)

  • 可能与上面的一个和设备/GPU/OS版本有关(因为Android碎片,你永远不知道你能发现什么)


  • 1) 我用getLowMemoryBitmapOptions()的代码更新了我的问题。每个设备上的选项都相同。2) 我的观点是,设备/GPU/OS与之相关的可能性很小。我更愿意假设一个来自摩托罗拉的自定义主屏幕实现——主屏幕不应该部分地影响小部件(所有的图像可能都应该是黑色的)。您可以安装一个不同的启动器,比如Go启动器,并尝试一下。出于测试目的,注释掉
    bitmapOpts.inpurgable=true;bitmapOpts.inInputShareable=true并更改为ARGB_8888。