Android 应用小部件未更新

Posted

技术标签:

【中文标题】Android 应用小部件未更新【英文标题】:Android App widget not updating 【发布时间】:2012-08-23 02:37:56 【问题描述】:

我还看到过其他几个关于小部件未更新的问题,但所有这些问题都是因为 updatePeriodMillis 被配置为小于 30 分钟的值,而我将我的设置为 1 小时,现在已经检查了几个小时。

我已经从我的实际小部件项目中启动了一个单独的项目,只是为了测试更新,但我一无所获。

小部件只是使用 currentTimeMillis() 更新 TextView。

androidManifest.xml

    <receiver android:name="TestWidget" android:exported="false">
        <intent-filter>
            <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
        </intent-filter>
        <meta-data android:resource="@xml/widget" android:name="android.appwidget.provider"/>
    </receiver>

widget.xml

 <?xml version="1.0" encoding="utf-8"?>
 <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
     android:initialLayout="@layout/widget"
     android:minHeight="40dp"
     android:minWidth="250dp"
     android:updatePeriodMillis="3600000" >
 </appwidget-provider>

第一次调用时一切正常,但永远不会再次调用 onUpdate。

有什么建议吗?

编辑:

TestWidget.class 仅覆盖 onUpdate

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) 

    final int N = appWidgetIds.length;

    for (int i = 0; i < N; i++) 
        // Inflate the layout
        RemoteViews v = new RemoteViews(context.getPackageName(),
                R.layout.widget);
        v.setTextViewText(R.id.text1, Double.toString(Math.random()));
        v.setTextViewText(R.id.text2,
                Long.toString(System.currentTimeMillis()));

        // Update the widget
        appWidgetManager.updateAppWidget(appWidgetIds[i], v);

    

【问题讨论】:

你能告诉我们你用来扩展appwidget提供者的类吗? (TestWidget) 完成。将其添加到帖子中。正如我所说,这只是一个测试,只是为了查看更新功能。实际的事情是做更多的工作,但即使是那么简单的工作也不起作用。 ps.:在 Galaxy Nexus Stock JB 上运行 您是否覆盖了代码中的 onReceive 方法?如果是这样,您是否在其中包含以下内容: super.onReceive(context, intent); 没有。只有 onUpdate() 被覆盖。 【参考方案1】:

我想就这个不必要的问题向社区道歉,因为最终我的手机似乎出了问题(考虑到我重新启动了它)或者我只是有点不耐烦。

看起来,onUpdate 确实需要几个小时才能开始被框架调用。在过去的 3 个小时里(在那之前我正在睡觉),我可以看到更新持续不断。

我没有删除问题,以防万一有人遇到同样的问题,您真的需要等待!

谢谢。

【讨论】:

我正要说我已经将你的代码复制到我的项目中并且它工作了>D所以我可以确认代码工作。

以上是关于Android 应用小部件未更新的主要内容,如果未能解决你的问题,请参考以下文章

Android:BatteryLevel 小部件未更新

在 Android 中更新多个应用小部件

Android 小部件未显示?

小部件列表视图未使用 notifyAppWidgetViewDataChanged 进行更新

使用集合更新应用小部件的问题

重启或升级应用程序后,我的 Android 小部件停止更新