我正在制作一个android小工具,它是一个按钮。
当单击它时,小部件午餐服务和服务写入共享首选项中的更改,然后小部件应该调用update方法来根据服务中更改的首选项值来更改背景。
问题是update方法在服务之前运行,因此小部件在服务更改它之前更新存储在共享首选项中的最后一个值。
我想要的:-单击小部件按钮- OnReceive方法-调用startService() -服务在服务中运行:编辑共享引用-服务结束-根据编辑的共享首选项值调用更新小部件
实际工作方式:-单击小部件按钮- OnRecieved方法-调用startService() -调用更新小部件和更新,具体取决于已编辑(但尚未编辑)的共享首选项值-服务正在磨合服务:编辑共享引用-服务结束
我的代码:- OnReceive() - in OnReceive():- startService();- updateWidgets();
如何在更新方法开始运行之前完全运行服务?
发布于 2013-02-19 02:57:28
startService()不是阻塞操作,因此如果在onReceive()上依次使用startService()和updateWidgets(),它就不会等待服务启动和结束后才运行updateWidgets()。
要获得您想要的方式,您需要在服务startCommand()的末尾调用updateWidgets(),并调用finish()来结束服务。
https://stackoverflow.com/questions/14943159
复制相似问题