asynctask(在widget onReceive中启动)完成之后的sendBroadcast

时间:2015-09-30 01:28:51

标签: android android-asynctask widget

目标:在AsyncTask完成后更新小部件视图。

场景:窗口小部件onReceive从用户点击中收到意图。这将在AsyncTask中启动网络操作。 interface已按照here所述传递给AsyncTask via构造函数。在interface方法中,我尝试发送会触发小部件onUpdate方法的广播,但我不相信它会被解雇。

思考:我最好的猜测是onReceive已经返回,因此我尝试用Context的{​​{1}}不再可用。我想我可以sendBroadcast get()但是如果操作时间太长,我不想触发ANR。如果我AsyncTask get(timeout, unit),我担心我可能会错过任务的结束,并且视图将不会更新。

完成任务后更新窗口小部件视图的最佳方法是什么?

解决方案:原来我错误地制作了我正在播放的AsyncTask

1 个答案:

答案 0 :(得分:1)

如果您可以保留要更新的视图的引用,那么只需调用view#onUpdate 在定义的interface.if中,并且你想使用Broadcast来通知视图更新,所以我建议你使用LocalBroadcastManager,那么你现在不需要担心上下文是否存在。希望这可以帮助你。