gpt4 book ai didi

android - 在应用小部件更新时替换 RemoteViewsFactory

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:51 25 4
gpt4 key购买 nike

我的应用小部件在多种模式下运行。对于其中的每一种模式,我都创建了一个 RemoteViewsFactory。为了在模式之间切换,我向我的 AppWidgetProvider 发送了一个 Intent 。收到它后,我创建了 RemoteViews 并将其传递给 AppWidgetManagerupdateAppWidget()。要为 Collection View 设置 RemoteViewsFactory,我调用了 RemoteViews' setRemoteAdapter():

rv.setRemoteAdapter(appWidgetId, R.id.widget_view_flipper, intent);

R.id.widget_view_flipper是collection view,intent是为了RemoteViewsService构造合适的工厂。

编辑: 我编辑了这个问题,因为我弄清楚了最初描述的问题。现在是我换工厂的时候,换了之后调用了新工厂的getViewAt(),但是collection view里面的元素根本就没有更新!怎么会这样?

目前我唯一想到的是我可以在工厂替换后延迟调用 AppWidgetManager 的 notifyAppWidgetViewDataChanged,它会导致 View 中的元素更新并出现丑陋的闪烁。

最佳答案

经过半天的挖掘,我想出了一个解决方法。

当我需要更新一个 widget 并替换一个工厂时,在 AppWidgetProvider 中执行以下操作:

appWidgetManager.updateAppWidget(appWidgetIds[i], null);
appWidgetManager.updateAppWidget(appWidgetIds[i], rv);

其中 rv 是新的 RemoteView。

旧的 RemoteViews 缓存在 AppWidgetHostView 中,这样我们就可以摆脱缓存的数据。

关于android - 在应用小部件更新时替换 RemoteViewsFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12980025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com