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

Android小部件:区分初始更新和自动更新?,android,widget,android-widget,home-screen-widget,Android,Widget,Android Widget,Home Screen Widget,我目前正在开发一个小部件,要求用户登录。当用户最初添加小部件而他们没有登录时,我会将他们带到登录活动,以便他们可以登录。但是,当小部件自动更新时,我不想这样做(当你只是浏览主屏幕时,随机启动一个应用程序会很烦人) 更新代码当前在onUpdate()中,但我还无法找出如何区分最初添加小部件时发生的更新和定期发生的更新。有办法做到这一点吗 总而言之,我试图做以下几点: -用户添加小部件时的初始更新:打开登录活动 -后续定期更新:不打开登录活动 注意:我希望避免使用onEnabled(),因为只有在添

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

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

总而言之,我试图做以下几点: -用户添加小部件时的初始更新:打开登录活动 -后续定期更新:不打开登录活动


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

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

onEnabled-Clear布尔值

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

如果您需要处理多个小部件实例,请使用变通选项:

如果您需要实现上述要求,则需要自行处理自动更新

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

  • 使用报警管理器触发小部件的onUpdate功能。将bundle值添加到intent,说明它是一个更新调用
  • 所有小部件交互意图都应该包含bundle值,表示它是一个更新调用
  • 在onUpdate方法中,检查上述相同的bundle值,如果有,则为正常更新,否则为BINGO:)
    我想这会管用的!每个小部件都需要一个单独的元素,但我可以轻松地将小部件ID添加到键中,使其唯一。谢谢