Android小部件:updateAppWidget()未调用onDataSetChanged

10
我有一个基于ListView的小部件运行良好,它依赖于JSON Web服务调用来填充自己。我有一个刷新按钮,它很好用,并且可以强制从web重新加载。我通过使用自定义广播来实现它,然后按顺序调用onDataSetChanged(),然后updateAppWidget()。我发现当Android根据我的XML定义自动更新小部件时,只调用了updateAppWidget(),而我的onDataSetChanged()函数从未运行,导致时间戳更新(我在每个updateAppWidget()调用中更新),但数据过时。
如何强制Android在给定的时间间隔内调用或触发onDataSetChanged()?

你是否曾经在远程适配器上调用过 notifyDataSetChanged() 方法? - Cat
不。我应该在什么时候做这个?似乎自动更新代码没有给我回调? - RealCasually
我认为,在更新时,您应该有一些对适配器的引用(不确定您想要如何保存此引用),然后可以在其上调用通知。onDataSetChanged() 仅在通知发送之后才会被调用。 - Cat
要明确一点,在我的AppWidgetProvder.onUpdate()方法中,我应该调用AppWidgetManager.notifyAppWidgetViewDataChanged,并传入小部件的ID和要更新的ListView的ID吗?现在试试看 :) - RealCasually
这个问题有点棘手,我在我的项目中似乎没有关于远程 ListView 的样例... 从你的问题来看,notifyAppWidgetViewDataChanged 没有起作用? - Cat
显示剩余3条评论
1个回答

14

原来我需要在AppWidgetProvider.onUpdate()方法中调用AppWidgetManager.notifyAppWidgetViewDataChanged(widgetId, view)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接