【问题标题】:Is it possible to update RemoteViews of an Android widget if user is not at the Homescreen?如果用户不在主屏幕上,是否可以更新 Android 小部件的 RemoteViews?
【发布时间】:2012-09-06 12:18:47
【问题描述】:

我正在开发一个 Android 电池小部件。我正在使用流行的 GeekYouUp Battery Widget 源并且一切正常,尽管我注意到即使使用原始源也会出现一个问题。如果用户正在运行任何应用程序并且小部件接收到广播,则确实会发生更新并正确读取状态,但小部件的 RemoteViews 根本不会更新。因此,当用户完成应用程序并返回主屏幕时,小部件会继续显示旧电池状态(启动应用程序之前的状态)。 我尝试创建一个简单的小部件,它每隔几秒钟更新一些 RemoteViews,并且情况相同 - 只要用户没有运行任何应用程序,一切都会正常工作。否则 RemoteViews 不会更新。

那么,是否有可能在应用程序运行时不断更新主屏幕上的 RemoteViews,或者系统在那时只是忽略它们?

提前致谢!

【问题讨论】:

    标签: android widget


    【解决方案1】:

    实际上,小部件有点独立于应用程序。它会自动更新自己(使用 updatePeriodMillis):

    <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
        android:minWidth="294dp" android:minHeight="72dp"
        android:updatePeriodMillis="86400000" android:initialLayout="your layout" />
    

    【讨论】:

    • 是的,但是这个值的最小间隔是 30 分钟,在这种情况下太长了。这就是为什么我使用带有 Service 的 BroadcastReceiver 来为每个发送的 ACTION_BATTERY_CHANGED 意图执行更新并且它有效,触发更新没有问题。问题是即使发生更新,如果用户不在主屏幕上,小部件的 RemoteViews 也不会改变。这就是为什么我的问题是当用户不在主屏幕时是否可以(手动)更新 RemoteViews。
    • 嗯,我很抱歉我的回答,这确实没有帮助......你能发布你的广播接收器的代码吗?
    • 我只是在理论上问是否有任何方法可以在另一个应用程序运行时更新小部件的 RemoteViews?
    猜你喜欢
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多