0

我正在制作一个 android 小部件,它是一个按钮。

当点击它时,小部件午餐服务和服务写入共享首选项中的更改,然后小部件应调用更新方法以根据服务中更改的首选项值更改背景。

问题是更新方法在服务之前运行,因此小部件会在服务更改之前更新存储在共享首选项中的最后一个值。

我想要什么: - 单击小部件按钮 - OnReceive 方法 - 调用 startService() - 服务正在运行 - 服务中:编辑共享参考 - 服务结束 - 根据共享首选项的值调用更新小部件

真正起作用的是: - 单击小部件按钮 - OnRecieved 方法 - 调用 startService() - 调用更新小部件并根据已编辑(但尚未编辑)的共享首选项的值进行更新 - 服务正在运行 - 服务中:编辑共享参考 - 服务结束

我的代码: - OnReceive() - 在 OnReceive() 中:--- startService(); --- 更新小部件();

在更新方法开始运行之前,我如何才能完全运行服务????

4

1 回答 1

0

startService() 不是阻塞操作,所以如果你在 onReceive() 上依次有 startService() 和 updateWidgets(),它不会等待服务启动和结束运行 updateWidgets()。

要获得您想要的方式,您需要在服务 startCommand() 结束时调用 updateWidgets() 并调用 finish() 来结束服务。

于 2013-02-18T18:57:27.680 回答