【问题标题】:Updating Android widgets更新 Android 小部件
【发布时间】:2016-05-20 08:55:26
【问题描述】:

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

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

【问题讨论】:

  • 我认为这个概念是使用警报管理器,发送更新广播。由于您可以同时拥有多个小部件..他们都收到广播,确认他们需要更新,然后自己更新。 (我不使用服务)
  • 你可以试试this。它工作正常。

标签: android widget


【解决方案1】:

无需使用 AlarmManager 进行小部件更新,因为此特性已在 AppWidgetProvider 类中。

在你的类中扩展 AppWidgetProvider 类:

public class MyClass extends AppWidgetProvider

现在覆盖 onUpdate 方法(以获取更新通知)

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

现在在你的主类和 AppWidgetManager 中设置 AppWidgetHost(从那里发送更新到应用小部件)

mAppWidgetManager = AppWidgetManager.getInstance(this);    
mAppWidgetHost = new AppWidgetHost(this, APP_WIDGET_HOST_ID);

现在更新小部件

mAppWidgetManager.updateAppWidget(appWidgetId, mRemoteView);

【讨论】:

  • 这不会比每 30 分钟更频繁地更新小部件。这是 updatePeriodMillis 属性的最小值。我想每分钟左右更新一次。
猜你喜欢
  • 2012-01-06
  • 1970-01-01
  • 2011-05-03
  • 2011-02-14
  • 2012-12-17
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多