首先,确保你的RemoteViews是小工具的状态的完整表示,如果你打电话AppWidgetManager.updateAppWidget()
。设置所有挂起的意图,查看数据等。当启动器想要从状态恢复你的小部件时,这个状态将被重新使用,例如。当轮换改变时。
当你想更新你的远程视图,但你不想提供一个完整的RemoteViews表示,即。您只想更改现有的RemoteView状态,则可以使用AppWidgetManager.partiallyUpdateAppWidget()
。
此更新不同于updateAppWidget(INT,RemoteViews),所述 RemoteViews对象被传递被理解为微件的不完整的 表示,并且因此不被 AppWidgetService缓存。请注意,因为这些更新没有被缓存,所以在使用AppWidgetService中的 缓存版本恢复小部件的情况下,任何 都不会因restoreInstanceState 还原而修改的那些状态保持不变。使用 RemoteViews.showNext(int),RemoteViews.showPrevious(int), RemoteViews.setScrollPosition(int,int)和类似的命令。
例如,推进ViewPager外线的onUpdate的小窗口时:
final RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.app_widget_4x2);
remoteViews.showNext(R.id.appWidget_viewFlipper);
appWidgetManager.partiallyUpdateAppWidget(widgetId, remoteViews);
来源
2016-06-15 22:11:30
Tom