0

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

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

总而言之,我正在尝试进行以下操作: - 用户添加小部件时的初始更新:打开登录活动 - 后续定期更新:不要打开登录活动

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

4

1 回答 1

0

如果您只是在寻找小部件的一个实例,那么您可以使用共享首选项布尔值来解决此问题。

onEnabled - 清除布尔值

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

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

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

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

  1. 使用警报管理器触发 Widget 的 onUpdate 功能。将 bundle 值添加到意图,说明它的更新调用。
  2. 所有小部件交互意图都应包含捆绑值以表示其为更新调用。
  3. 在 onUpdate 方法中,检查上述相同的捆绑包值,如果存在,则为正常更新,否则 BINGO... :)
于 2017-07-12T17:54:53.170 回答