Yul*_*aya 4 android android-appwidget
我的app小部件可以在多种模式下运行.对于这些模式中的每一种,我创建了一个RemoteViewsFactory.要在模式之间切换,我向我发送一个意图AppWidgetProvider.一旦接收到它,我创建RemoteViews并把它传递到AppWidgetManager的updateAppWidget().要设置RemoteViewsFactory集合视图,我调用RemoteViews' setRemoteAdapter():
rv.setRemoteAdapter(appWidgetId, R.id.widget_view_flipper, intent);
Run Code Online (Sandbox Code Playgroud)
R.id.widget_view_flipper是集合视图,intent用于RemoteViewsService构建适当的工厂.
编辑:我编辑了这个问题,因为我找出了最初描述的问题.现在,当我更换工厂时,getViewAt()新工厂的更改后会调用,但集合视图中的元素根本不会更新!怎么会发生这种情况?
现在我唯一想到的就是我可以在工厂更换后调用AppWidgetManager的notifyAppWidgetViewDataChanged,它会导致视图中的元素以丑陋的闪烁进行更新.
Yul*_*aya 11
经过半天的挖掘,我想出了一个解决方法.
当我需要更新窗口小部件并替换工厂时,请在AppWidgetProvider中执行以下操作:
appWidgetManager.updateAppWidget(appWidgetIds[i], null);
appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
Run Code Online (Sandbox Code Playgroud)
其中rv是新的RemoteViews.
旧的RemoteViews缓存在AppWidgetHostView中,这样我们就可以摆脱缓存的数据.
| 归档时间: |
|
| 查看次数: |
3799 次 |
| 最近记录: |