【问题标题】:Widget updates before service has ended服务结束前的小部件更新
【发布时间】:2013-02-18 18:40:43
【问题描述】:

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

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

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

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

真正有效的方法: - 点击小部件按钮 - OnRecieved 方法 - 调用 startService() - 调用更新小部件和更新取决于共享偏好的值已编辑(但尚未编辑) - 服务正在运行 - 在服务中:编辑共享参考 - 服务结束

我的代码: - OnReceive() - 在 OnReceive() 中: --- 启动服务(); --- updateWidgets();

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

【问题讨论】:

    标签: android android-widget android-service


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2021-09-02
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多