【问题标题】:Android Widgets: Differentiating between initial update and auto-update?Android Widgets:区分初始更新和自动更新?
【发布时间】:2017-07-12 17:33:03
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    onEnabled - 清除布尔值

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

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

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

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

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

    【讨论】:

    • 我认为这行得通!我需要为每个小部件创建一个单独的元素,但我可以轻松地将小部​​件 ID 添加到键中以使其唯一。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多