android - 只是更新一个小部件 RemoteViews 而不是完全创建一个新的?

标签 android android-widget onupdate

在我的 AppWidgetProvider 类的 onUpdate 方法中,我最终执行了大量代码,以便我可以完全重新创建一个新的 RemoteView 对象。事实上,每次更新时,我真的只需要在 RemoteView 的其中一个 TextView 中设置文本。

有什么方法可以只修改特定小部件已经使用的 RemoteViews 吗?

最佳答案

首先,RemoteView 不是 View 。它是一组构建 View 层次结构的指令。它用于在另一个进程中重新创建 View (应用程序小部件不会在您的应用程序进程中执行)。因此它是可序列化和可变的。

因此,当您初始化 RemoteView 时,只需在某处存储对它的引用,例如在您的自定义 AppWidgetProvider 的字段中。 下次您需要它时,从现场获取它并对其进行更改。要更改 TextView 中的字符串,请使用 setString(..) .

remoteView.setString(textViewId, "setText", "some text for TextView")

关于android - 只是更新一个小部件 RemoteViews 而不是完全创建一个新的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4528824/

相关文章:

android - 启用相机时预览屏幕中的图像格式是什么

android - Swype 键盘在 EditText 上重叠

Android:是否有相当于 XML android:digits 的方法?

android - 从 gradle 运行 lint 目标时出现 "Could not initialize class"错误

java - 如何以编程方式绘制特定的可绘制资源?

Android GCM - 在客户端上创建通知时崩溃

android - 在主屏幕小部件的 ListView 上方添加一个按钮 - 如何捕获单击此按钮?

android - onUpgrade() 在新安装的应用程序

javascript - 选项卡重新加载时如何运行此脚本(chrome 扩展)?

mysql - 如果删除了两个外键,则删除表条目