android – 应用程序小部件setImageViewUri不会更新图像

android – 应用程序小部件setImageViewUri不会更新图像,第1张

概述我有一个应用程序部件,它只包含一个图像视图.我重新绘制该图像,并将其存储在应用程序的私有内存中,然后使用uri(widget.set ImageViewUri(R.id.widget_icon,uri))设置RemoteViews的图像,而不是发送自己的位图,因为非常罕见我得到的情况!失败的BINDER交易! 问题是,随着图像随时间的变化,窗口小部件的图像不会改变.我使用root资源管理器检查保 我有一个应用程序小部件,它只包含一个图像视图.我重新绘制该图像,并将其存储在应用程序的私有内存中,然后使用uri(Widget.set ImageVIEwUri(R.ID.Widget_icon,uri))设置RemoteVIEws的图像,而不是发送自己的位图,因为非常罕见我得到的情况!失败的BINDER交易!

问题是,随着图像随时间的变化,窗口小部件的图像不会改变.我使用root资源管理器检查保存的png,并正确更新.但不显示正确的图像.每个小部件显示从添加到主屏幕的时间的图像.如果我使用setimageVIEwBitmap(…)它可以正常工作,除了罕见的失败的binder事务.

我使用下面的方法从服务更新窗口小部件.它不适用于Android 2.3.7,并且运行于2.2的模拟器.可能是什么问题呢?它是否以某种方式缓存?

public voID updateWidget(Context context) {  // redraws the Widget's image  updateIcon();  OutputStream stream;  try {    stream = context.openfileOutput("icon.png",Context.MODE_WORLD_READABLE);  }  catch (fileNotFoundException ex) {    ex.printstacktrace();    return;  }  m_Icon.compress(CompressFormat.PNG,100,stream);  try {    stream.close();  }  catch (IOException ex) {    ex.printstacktrace();  }  AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);  int[] appWidgetIDs = appWidgetManager.getAppWidgetIDs(new Componentname(context,WidgetProvIDer.class));  Intent intent = new Intent(context,MyDialog.class);  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  PendingIntent clickIntent = PendingIntent.getActivity(context,intent,0);  file file = new file(context.getfilesDir().getabsolutePath() + file.separator + "icon.png");//      Uri uri = Uri.fromfile(file);  // update all Widgets on home screen  for (int wID : appWidgetIDs) {    RemoteVIEws Widget = new RemoteVIEws(context.getPackagename(),R.layout.Widget);    Widget.setonClickPendingIntent(R.ID.Widget_layout,clickIntent);    // === EDIT ===    // Uri.fromfile(file); does not work correctly on androID 2.1,only 2.2 and up    // Widget's image will disappear//        Widget.setimageVIEwUri(R.ID.Widget_icon,uri);    Widget.setimageVIEwUri(R.ID.Widget_icon,Uri.parse(file.getPath()));    intent.putExtra(AppWidgetManager.EXTRA_APPWidget_ID,wID);    appWidgetManager.updateAppWidget(wID,Widget);  }}

编辑:
我也尝试过一个自定义的ContentProvIDer并设置“content:// …”uri,但结果相同.该小部件显示从添加到主屏幕时的图像,并且不会随时间更新.

logcat不显示任何错误.

解决方法 如果Uri保持不变,AndroID似乎不会更新图像.我发现了一个黑客来解决这个问题.只需调用Widget.setimageVIEwUri(R.ID.Widget_icon,Uri.parse(“”));之前的Widget.setimageVIEwUri(R.ID.Widget_icon,uri);.

它调用setimageVIEwUri()两次,但似乎工作正常.我很乐意听到一个更好的方法来解决它,因为我自己遇到这个问题.

总结

以上是内存溢出为你收集整理的android – 应用程序小部件setImageViewUri不会更新图像全部内容,希望文章能够帮你解决android – 应用程序小部件setImageViewUri不会更新图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1133763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存