Android小部件:区分初始更新和自动更新?

时间:2017-07-12 17:33:04

标签: android widget android-widget home-screen-widget

我目前正在开发一个需要用户登录的小部件。当用户最初添加小部件并且他们没有登录时,我将他们带到登录活动,以便他们可以登录然而,当我小部件自动更新时,我想要这样做(当你只是浏览你的主屏幕时随机启动应用会非常烦人)。

更新代码目前在onUpdate()中,但我还没有弄清楚如何区分最初添加小部件时发生的更新和定期发生的更新。有没有办法做到这一点?

总结一下,我试图做出以下建议: - 用户添加窗口小部件时的初始更新:打开登录活动 - 后续定期更新:不要打开登录活动

注意:我想避免使用onEnabled(),因为只有在添加FIRST小部件时才会调用它。我希望每次添加新窗口小部件时都会运行我的代码。

1 个答案:

答案 0 :(得分:0)

如果您只想查看窗口小部件的一个实例,那么可以使用共享首选项布尔值来解决此问题。

onEnabled - 清除布尔值

onUpdate - 如果未设置布尔值 - >意味着第一次(做你的工作并设置布尔值) 如果设置了布尔值 - >表示正常的小部件更新。

如果您需要处理多个小部件实例,请解决此选项:

如果您需要达到上述要求,则需要按自己的间隔处理自动更新。

这意味着,对onUpdate的所有调用都应来自您自己创建的Intents。那就是:

  1. 使用警报管理器触发Widget的onUpdate功能。将bundle值添加到intent以声明其更新调用。
  2. 所有窗口小部件交互意图应包含捆绑值以表示其更新呼叫。
  3. 在onUpdate方法中,检查上面提到的相同捆绑值,如果在那里,它是正常更新,否则BINGO ......:)