2012-09-06 12 views
1

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

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

在此先感谢!

回答

0

实际上,小部件是从应用程序中独立的。它会自动更新本身(与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" /> 
+0

是的,但该值的最小时间间隔为30分钟,这是太长的方式在这种情况下。这就是为什么我使用带有服务的BroadcastReceiver对正在发送的每个ACTION_BATTERY_CHANGED意图执行更新,并且它的工作原理,触发更新没有任何问题。问题是,即使发生更新,如果用户不在主屏幕上,小部件的RemoteViews也不会更改。这就是为什么我的问题是可以在用户不在主屏幕时更新RemoteView(手动)。 –

+0

嗡嗡声我看到我的答案抱歉,这确实没有帮助... 您可以发布您的broadcastReceiver的代码吗? –

+0

我只是在理论上问,在另一个应用程序运行时是否有任何方法更新窗口小部件的RemoteViews? –

相关问题