首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警报每秒都在响吗?

警报每秒都在响吗?
EN

Stack Overflow用户
提问于 2019-05-22 07:02:56
回答 2查看 40关注 0票数 0

我有一个每15分钟重复一次闹钟的功能。

问题是它每秒都在发射。

我在我的主要活动中有以下内容:

代码语言:javascript
复制
 AlarmManager alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intentn = new Intent(context, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentn, 0);
        Calendar time = Calendar.getInstance();
        time.setTimeInMillis(System.currentTimeMillis());

        if(android.os.Build.VERSION.SDK_INT>=23) {
            alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,1000*900, pendingIntent);
        }
        else{
            alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
        }

我在我的AlarmReceiver onReceive()中重复了上面的相同操作,以便在它触发后再次设置它。

有什么想法是错的吗?我该怎么做才能让它正确地重复呢?

EN

回答 2

Stack Overflow用户

发布于 2019-05-22 07:12:34

首先,在不添加当前时间的情况下设置闹钟。如下所示:

代码语言:javascript
复制
...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...

应该改为

代码语言:javascript
复制
...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time + 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, time + 1000*900, pendingIntent);
...

其次,有一个函数可以完成我认为您在这里要完成的任务(设置重复闹钟)。参见setRepeating()

票数 1
EN

Stack Overflow用户

发布于 2019-05-22 15:15:53

尝试使用android worker manager,因为它也是在打瞌睡模式下工作。https://developer.android.com/reference/androidx/work/PeriodicWorkRequest#min_periodic_interval_millis

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56247338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档