AppWidgetProvider onEnabled() - 此时是否知道小部件列表?

时间:2016-01-28 09:17:26

标签: android android-appwidget appwidgetprovider

我使用AlarmManager为每个小部件设置重复警报以进行更新。它在大多数设备上运行良好。

为了在重新启动后重新建立警报,我依赖于onEnabled()方法,因为对于app小部件组,它会被调用一次。在那里,我有类似的东西:

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int appWidgetIds[] = appWidgetManager.getAppWidgetIds(new ComponentName(context, MyAppWidgetProvider.class));
for (int appWidgetId : appWidgetIds) {
    // call function to set the repeating alarm for this widget (including doing a widget update NOW)...
    updateAppWidgetAlarm(context, appWidgetId, appWidgetManager, alarmManager);
}

虽然这在大多数情况下似乎运行良好,但似乎对于某些设备onEnabled()方法根本没有做任何事情。我知道它正在调用,从我输入的一些日志记录中,但没有任何事情发生。

我怀疑appWidgetIds数组可能是空的,因为在重新启动后的早期时间列表尚未填充。我会进行更多的记录,看看是否正确。

我是否将onEnabled()用于某些不适合的事情?此时,appWidgetIds数组是否应始终在应用小部件中包含有意义的内容。生命周期?

我还尝试将上述内容拖延到handler.postDelayed()内,但结果不确定,推迟了上述内容。

0 个答案:

没有答案