如何在每天午夜更新 Android 小部件?以下解决方案是通过查看 stack overflow 上关于此主题的其他问题形成的。
1)在扩展 AppWidgetProvider 的活动中创建小部件时调用 schedule(context)。
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
schedule(context);
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
2) Schedule方法应该设置一个计时器和闹钟,以便在每天午夜时更新小部件。然而,这并没有起作用。
protected void schedule(Context context) {
final Intent i = new Intent(context, CalendarWidget.class);
service = PendingIntent.getService(context, 0, i, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
calendar.add(Calendar.DAY_OF_MONTH, 1);
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
//This doesn't work
// alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), service);
//This doesn't work either.
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, service);
}
这个解决方案并不起作用,而且很难测试,因为只能在每天午夜进行测试;因此,请提供帮助。我会将奖金授予第一个使它起作用的人。