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

Android Widgets: Differentiating between initial update and auto-update?

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

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

总而言之,我正在努力做到以下几点: - 用户添加小部件时的初始更新:打开登录 activity - 后续定期更新:不开启登录activity

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

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

onEnabled - 清除布尔值

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

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

如需实现上述需求,需自行处理定时自动更新

也就是说,所有对onUpdate的调用都应该来自你自己创建的Intents。即:

  1. 使用Alarm manager触发Widget的onUpdate功能。将捆绑包值添加到说明其更新调用的意图。
  2. 所有小部件交互意图都应包含 bundle 值以表示其更新调用。
  3. 在 onUpdate 方法中,检查上面提到的相同包值,如果存在,则为正常更新,否则 BINGO...:)