是否可以在工作线程中调用 appWidgetManager.updateAppWidget() ?

Posted

技术标签:

【中文标题】是否可以在工作线程中调用 appWidgetManager.updateAppWidget() ?【英文标题】:Is it possible to call appWidgetManager.updateAppWidget() in worker thread? 【发布时间】:2021-11-30 22:15:28 【问题描述】:

喂?我正在制作一个安卓应用小部件。

我的小部件中有许多来自 DB 的数据相关 ui。

所以为了避免广播接收器 ANR 问题,我做了一个 remoteView 并从 db 加载数据并在 remoteView 中设置数据相关的 ui。

最后我打电话给appWidgetManager.updateAppWidget(appWidgetId, remoteViews),应用小部件已正确更新。

但是,我记得 UI 更新相关的逻辑必须在 UI 线程中。

那么,我想知道我还能在工作线程中调用 appWidgetManager.updateAppWidget() 吗?

【问题讨论】:

【参考方案1】:

我记得UI更新相关的逻辑必须在UI线程中。

正确,但您的代码与应用中的 UI 无关。

我想知道我仍然可以在工作线程中调用 appWidgetManager.updateAppWidget() 吗?

RemoteViews 是一种数据结构,用于描述 另一个进程 将呈现的 UI。欢迎您创建这样的数据结构并在后台线程上将其交给操作系统。该其他进程将使用其主应用程序线程来呈现您的RemoteViews 描述的 UI。

【讨论】:

以上是关于是否可以在工作线程中调用 appWidgetManager.updateAppWidget() ?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Node 工作线程来执行数据库插入?

Task用法-任务等待wait

三个线程顺序输出

是否可以创建一个从不同类调用函数的线程?

后台工作线程和异步调用

是否可以在工作后将线程连接到“并行”区域?