我刚刚创建了我的第一个小部件,一切都很顺利,直到我到达我应该在更新时设置的部分。这是我的代码,可以清楚地说明我的问题:
安卓清单:
<receiver android:name="com.whizzapps.stpsurniki.widget.UrnikWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/app_widget_info"/>
</receiver>
应用小部件提供程序 XML:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="80dp"
android:minHeight="40dp"
android:updatePeriodMillis="10"
android:initialLayout="@layout/app_widget"
android:widgetCategory="home_screen" >
</appwidget-provider>
AppWidgetProvider 类:
public class UrnikWidget extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
Log.i("TAG", "onUpdate");
}
}
我创建了一个带有 TextView 的简单小部件,其中显示了某个单词,它根本没有逻辑,因为我仍在学习如何使用小部件。如您所见,我创建了一个 log.i 以查看实际调用 onUpdate 的时间,而我的问题是它仅在我第一次将小部件放在主屏幕上时才被调用。
我知道 10 毫秒的更新间隔太低,不应该因为电池耗尽而使用,但我使用 10 毫秒只是为了测试目的。
为什么 onUpdate 只执行一次而不是每 10 毫秒执行一次?如果我只需要在特定时间更新小部件,那么更新小部件的最佳方式是什么?假设我只需要在上午 7 点、上午 8 点和下午 3 点更新我的小部件。这可能吗?谢谢!