我知道这已经多次讨论了,但我仍然不清楚如何正确实现这一点。 我想比每30分钟更新一次小部件(updatePeriodMillis属性的最小值)。
我知道我应该使用AlarmManager,但我见过的所有示例都使用AlarmManager来调用更新小部件的服务。为什么它不能调用AppWidgetProvider的onUpdate()方法?如果第二个类用于此,为什么我还应该有一个(空)AppWidgetProvider?为什么使用服务(在我假设的后台运行),如果AlarmManager调用它重复呢?为什么不使用BroadcastReceiver?
答案 0 :(得分:0)
无需使用AlarmManager进行窗口小部件更新,因为此特性已在AppWidgetProvider类中。
在您的班级中扩展AppWidgetProvider类:
public class MyClass extends AppWidgetProvider
现在覆盖onUpdate方法(获取更新通知)
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
现在在主类和AppWidgetManager中设置AppWidgetHost(从哪里发送更新到app小部件)
mAppWidgetManager = AppWidgetManager.getInstance(this);
mAppWidgetHost = new AppWidgetHost(this, APP_WIDGET_HOST_ID);
现在更新小部件
mAppWidgetManager.updateAppWidget(appWidgetId, mRemoteView);