【问题标题】:AlarmManager Android Every DayAlarmManager Android 每天
【发布时间】:2011-06-01 13:21:09
【问题描述】:

我正在尝试制定时间表。

它应该在每天下午 1 点或 2 点运行...

目前我只能让它每 10 秒或 10 分钟运行一次...

Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class);
pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 10);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show();

谢谢

【问题讨论】:

    标签: android scheduled-tasks alarmmanager


    【解决方案1】:

    每天都会报警。

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  AlarmManager.INTERVAL_DAY , pendingIntent);
    

    【讨论】:

    • set() 只会触发一次。 setRepeating() 每天都会触发。
    • -1 此代码不正确(至少从 SDK 2.1 开始)。 AlarmManager.setRepeating 接受 4 个参数,而不是 3 个。
    【解决方案2】:

    此代码将在每天下午 1 点或 2 点运行 Intent

    Calendar calendar = Calendar.getInstance();
    
    calendar.set(Calendar.HOUR_OF_DAY, 13); // For 1 PM or 2 PM
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);
    PendingIntent pi = PendingIntent.getService(context, 0,
                new Intent(context, MyClass.class),PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                                    AlarmManager.INTERVAL_DAY, pi);
    

    【讨论】:

    • 您可能需要添加 calendar.add(Calendar.DAY_OF_YEAR, 1);避免立即触发警报。
    • 你也可以添加 calendar.set(Calendar.MILLISECOND, 0);更准确地说:)
    • 当应用程序进入后台/关闭/暂停时也会运行吗?
    • @MarioGalván 是的,直到警报被取消,或者设备重新启动并且此代码不再执行
    • 我已经尝试过了,它工作正常,但几天后它就停止了,应用程序停止触发 BroadcastReceiver 你知道发生了什么事情的任何人
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多