我刚刚创建了我的第一个小部件,一切都进行得很顺利,直到我到了设置更新时间的部分。以下是我的代码,以便让我的问题更清楚:
Android清单:
<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毫秒的更新间隔太低,不应该使用,因为它会消耗电池电量,但是出于测试目的,我仍然使用了10ms。
为什么onUpdate只执行一次而不是每10毫秒执行一次?如果我只需要在特定时间更新小部件,那么最好的更新方法是什么?比如说,我只需要在早上7点、8点和下午3点更新我的小部件。这是可能的吗?谢谢!