有没有办法每天 12 点唤醒我的 Android 应用程序来运行一些代码

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

有没有办法每天 12 点唤醒我的 Android 应用程序来运行一些代码,例如在警报接收器中,但我的正好在 12 点运行晚了 10 分钟到几小时

   Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        if (Calendar.getInstance().after(calendar)) {
            calendar.add(Calendar.DAY_OF_MONTH, 1);
        }

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 100, new Intent(context, MyReceiver.class), PendingIntent.FLAG_IMMUTABLE);
        AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        manager.cancel(pendingIntent);

        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 86400000, pendingIntent);

有时运行得很好,但大多数情况下不是

java android alarmmanager repeatingalarm
1个回答
0
投票

您正在使用 setInexactRepeating() ,从它的名称来看,它是不精确的,因此系统可以延迟警报以实现精确的行为,您将必须使用 setAlamClock() ,并且每次它在 12 点触发时,您都必须安排另一个警报下一次,因为没有确切的重复,您还需要考虑诸如设备是否重新启动(所有警报将被取消)之类的事情,以便重新安排它们的接收器将完成这项工作。

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