目标:在AsyncTask
完成后更新小部件视图。
场景:窗口小部件onReceive
从用户点击中收到意图。这将在AsyncTask
中启动网络操作。 interface
已按照here所述传递给AsyncTask
via构造函数。在interface
方法中,我尝试发送会触发小部件onUpdate
方法的广播,但我不相信它会被解雇。
思考:我最好的猜测是onReceive
已经返回,因此我尝试用Context
的{{1}}不再可用。我想我可以sendBroadcast
get()
但是如果操作时间太长,我不想触发ANR。如果我AsyncTask
get(timeout, unit)
,我担心我可能会错过任务的结束,并且视图将不会更新。
完成任务后更新窗口小部件视图的最佳方法是什么?
解决方案:原来我错误地制作了我正在播放的AsyncTask
答案 0 :(得分:1)
如果您可以保留要更新的视图的引用,那么只需调用view#onUpdate
在定义的interface.if中,并且你想使用Broadcast来通知视图更新,所以我建议你使用LocalBroadcastManager,那么你现在不需要担心上下文是否存在。希望这可以帮助你。