我有一个小部件需要在
我的下一个尝试是创建一个意图服务。小部件的
两个小部件的案例并不重要,但我只是想知道这种模式的最佳实践。
为了解决两个小部件的情况,我最终通过在任何一个小部件被点击时更新所有小部件实例的相同数据来解决。例如,我只执行一次长时间运行的过程,然后将结果应用于所有小部件实例。在我的情况下,这没关系,但对于许多小部件而言,这可能很重要。
您有什么想法?
onUpdate()
中执行潜在的长时间操作。直接执行这个操作导致了ANR错误。为了解决这个问题,我的第一次尝试是在其中创建一个线程。我发现在某些情况下小部件不会被更新。我的猜测是,onUpdate()
退出后,Android可能会终止未完成的线程进程。我的下一个尝试是创建一个意图服务。小部件的
onUpdate()
只需启动意图服务,该服务直接完成工作并在完成后更新小部件。这种方法有效,但令我惊讶的是,onHandleIntent()
是单线程的。如果我有两个小部件,并且两者都更新并启动了意图服务,则它们将按顺序更新...两个小部件的案例并不重要,但我只是想知道这种模式的最佳实践。
为了解决两个小部件的情况,我最终通过在任何一个小部件被点击时更新所有小部件实例的相同数据来解决。例如,我只执行一次长时间运行的过程,然后将结果应用于所有小部件实例。在我的情况下,这没关系,但对于许多小部件而言,这可能很重要。
您有什么想法?