1. 云栖社区>
  2. >
  3. 正文

AlarmManager锁屏后设置的定时被取消的解决方案

作者:用户 来源:互联网 时间:2018-08-30 14:25:56

AlarmManager锁屏后设置的定时被取消的解决方案 - 摘要: 本文讲的是AlarmManager锁屏后设置的定时被取消的解决方案, 我用alarmmanager设置了定时任务,但是锁屏的时候根本不会执行。查了大量资料,还是无法解决,有好的办法吗。(测试手机:华为相关代码如下: if (Build.VERSION.SDK_INT >= 19) 

我用alarmmanager设置了定时任务,但是锁屏的时候根本不会执行。查了大量资料,还是无法解决,有好的办法吗。(测试手机:华为相关代码如下:
if (Build.VERSION.SDK_INT >= 19) {
                            mAlarmManager.setExact(AlarmManager.RTC_WAKEUP,
                                    course.getStartTime().getTimeInMillis(),
                                    vibrationPI);

                            mAlarmManager.setExact(AlarmManager.RTC_WAKEUP,
                                    course.getEndTime().getTimeInMillis(),
                                    normalPI);
                        } else {
                            mAlarmManager.set(AlarmManager.RTC_WAKEUP,
                                    course.getStartTime().getTimeInMillis(),
                                    vibrationPI);

                            mAlarmManager.set(AlarmManager.RTC_WAKEUP,
                                    course.getEndTime().getTimeInMillis(),
                                    normalPI);
                        }


public class SetVibrationService extends IntentService {
    private static final String NAME = "SetVibrationService";
    private static final int NOTIFICATION_ID = 1;

    public SetVibrationService() {
        super(NAME);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        AudioManager audioManager =
                (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 1);

        NotificationUtil.
                sendNotification(this, NOTIFICATION_ID, R.string.vibrate_service_notification_text);
        Log.d("ApplicationLog", "VibrateService" + new Date());
    }
}


public class SetNormalService extends IntentService {
    private static final String NAME = "SetNormalService";
    private static final int NOTIFICATION_ID = 2;

    public SetNormalService() {
        super(NAME);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        AudioManager audioManager =
                (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 2, 1);

        NotificationUtil.
                sendNotification(this, NOTIFICATION_ID, R.string.normal_service_notification_text);

        Log.d("ApplicationLog", "NormalService" + new Date());
    }
}

以上是AlarmManager锁屏后设置的定时被取消的解决方案的全部内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有AlarmManager锁屏后设置的定时被取消的解决方案的相关内容,欢迎继续使用右上角搜索按钮进行搜索,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备
Apache Spark Meetup China 第1期 最全资料下载