我正在开发一个使用RemoteViews来显示ListView的appwidget。为简单起见,我将对appwidget的功能进行类比:
这一切都按预期工作,除非我尝试从appwidget手动更新ListView。我已经设置了PendingIntent来重新启动配置活动,这也有效。不幸的是,对AppWidgetManager.updateAppWidget()的调用不会立即被调用,因为它在将其添加到主屏幕时启动并且ListView没有得到更新。然而,在向下滚动列表之后,会调用更新(直到它传递了它在缓存中加载的行数,我估计)。这会触发我的FlightBoardAppWidgetService和ViewsFactory。这几乎就像updateAppWidget被放入一些延迟加载的队列中一样。我试着查看Android源代码,看看AppWidgetManager.updateAppWidget()是如何编码的,但它似乎是隐藏的。
tl; dr: AppWidgetManager.updateAppWidget()并不总是立即被调用,是什么给出的?
有没有办法让ListView在实际调用时更新?我究竟做错了什么?谢谢!
答案 0 :(得分:0)
好吧,我最终解决了这个问题。这有点像黑客,但我最终通过声明刷新广播和更新广播来解决问题。每次我想更新小部件时,我都会调用updateAppWidget(),然后从接收和处理此广播的函数中,启动另一个调用notifyChanged的广播。这一直都有效!