Android:使用Alarmmanager更新小部件

问题描述 投票:0回答:1

我有一个带有小部件的应用。为了更新小部件,我使用以下代码:

private void scheduleNextUpdate(Context context, boolean fail) {
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, WidgetProvider.class);
    intent.setAction(ACTION_SCHEDULED_UPDATE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
    Calendar nextSchedule = Calendar.getInstance();

        **nextSchedule.setTimeZone(TimeZone.getTimeZone("UTC"));**
        Calendar cal = Calendar.getInstance();
        nextSchedule.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE),0,0,10);
        nextSchedule.add(Calendar.DAY_OF_YEAR, 1);

    **alarmManager.setExact(AlarmManager.RTC_WAKEUP, nextSchedule.getTimeInMillis(), pendingIntent);**
}

有时它会按预期在午夜左右进行更新,有时会在凌晨2-3点左右进行更新(与GMT相关,并且有时根本不更新,因此我需要删除小部件并重新放置。

我做错了什么?如何确定更新是根据设备所在的时区在午夜左右完成的?谢谢

android android-widget alarmmanager
1个回答
0
投票

可能是因为背景限制。为什么不使用ScheduledTask或WorkManager?

© www.soinside.com 2019 - 2024. All rights reserved.