Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 报警管理器设置随机重复点火_Android_Android Intent_Android Pendingintent_Android Alarms - Fatal编程技术网

Android 报警管理器设置随机重复点火

Android 报警管理器设置随机重复点火,android,android-intent,android-pendingintent,android-alarms,Android,Android Intent,Android Pendingintent,Android Alarms,我已经阅读了这里大部分关于设置重复警报的帖子,似乎没有一篇能解决我的问题 我有两个重复报警,设置次数如下所示: trigger = System.currentTimeMillis() + (Integer.parseInt(test) * 60 * 1000); workLength = (long) (Integer.parseInt(test) * 60 * 1000); breakLeng = (long) (Integer.p

我已经阅读了这里大部分关于设置重复警报的帖子,似乎没有一篇能解决我的问题

我有两个重复报警,设置次数如下所示:

    trigger = System.currentTimeMillis()
                + (Integer.parseInt(test) * 60 * 1000);

    workLength = (long) (Integer.parseInt(test) * 60 * 1000);

    breakLeng = (long) (Integer.parseInt(breakLength) * 60 * 1000);

    private void recurringInitialAlarm() {
                // TODO Auto-generated method stub
                // work inital


                    alarm.set(AlarmManager.RTC_WAKEUP, trigger, pintent);
                    SharedPreferences pref = getActivity()
                            .getSharedPreferences("pref", 0);
                    SharedPreferences.Editor edit = pref.edit();

                    System.out.println("initial work alarm set");
                    edit.putString("takeBreak", "true");
                    edit.commit();
                    System.out.println("takeBreak = true");

            }

        private void recurringWorkAlarm() {
                // TODO Auto-generated method stub
                // work recurring

                alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                            System.currentTimeMillis(), (2 * workLength) + breakLeng,
                            pintent3);
                System.out.println("work recurring"
                            + ((2 * workLength) + breakLeng));

            }

        private void recurringBreakAlarm() {
                // TODO Auto-generated method stub
                // break

                alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,
                            System.currentTimeMillis(), workLength + breakLeng, pintent2);
                System.out.println("break times"
                            + workLength + breakLeng);

            }
如果待定意向由以下人员指定:

Intent intent = new Intent(getActivity(), AlarmReceiver.class);

        final PendingIntent pintent = PendingIntent
                .getBroadcast(getActivity(), 1, intent,
                        PendingIntent.FLAG_UPDATE_CURRENT);

        final PendingIntent pintent2 = PendingIntent
                .getBroadcast(getActivity(), 2, intent,
                        PendingIntent.FLAG_UPDATE_CURRENT);

        final PendingIntent pintent3 = PendingIntent
                .getBroadcast(getActivity(), 3, intent,
                        PendingIntent.FLAG_UPDATE_CURRENT);
问题是,两个重复的警报在创建后大约10秒触发,并且在这两个警报之间随机触发时间。我知道,对于KitKat设备,警报并不准确,可能会有所不同,但是,从长远来看,它确实会在之后的时间发送通知

例如,当我将两个重复设置为正好相隔一分钟时:

17:09:20--启动报警管理器
17:09:35--两个重复警报均已触发
17:10:23——一人被解雇
17:11:28——一人被解雇
17:12:34——一人被解雇,等等


问题:我如何消除10秒后出现的这些随机通知?

警报“立即”(15秒后)触发的原因是您为
System.currentTimeMillis()
安排了第一个事件,AlarmManager在15秒内完成了这项工作,这非常接近


你需要做一些事情,比如为
系统设置第一个报警事件。currentTimeMillis()+初始等待时间

1)你可能应该分别发布每个问题,2)对于问题1,你需要发布更多代码。。。你说的是你所期望的,但是没有给出足够的信息来说明为什么你会得到一个意想不到的结果。我用一个问题更新了它。关于问题1,我不太清楚为什么会得到意外结果,我尝试过检查设置的报警时间是否大于当前时间,但没有效果;开始的时候还是随机的,谢谢!我误解了那个参数在做什么。