更新Android小部件

时间:2016-05-20 08:55:27

标签: android widget

我知道这已经多次讨论了,但我仍然不清楚如何正确实现这一点。 我想比每30分钟更新一次小部件(updatePeriodMillis属性的最小值)。

我知道我应该使用AlarmManager,但我见过的所有示例都使用AlarmManager来调用更新小部件的服务。为什么它不能调用AppWidgetProvider的onUpdate()方法?如果第二个类用于此,为什么我还应该有一个(空)AppWidgetProvider?为什么使用服务(在我假设的后台运行),如果AlarmManager调用它重复呢?为什么不使用BroadcastReceiver?

1 个答案:

答案 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);