警报每秒触发一次吗?

时间:2019-05-21 23:02:56

标签: android android-alarms

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

问题在于它每秒发射一次。

我的主要活动是这样:

 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()中重复了上面的相同操作,以在触发后再次设置它。

有什么想法是什么错误,我该怎么做才能使其正确重复?

2 个答案:

答案 0 :(得分:1)

首先,您要设置闹钟而不添加当前时间。见下文:

google::protobuf::Message *modObj = new ModObj();

const google::protobuf::Descriptor *outModDesc 
            =  modObj->GetDescriptor();
const Reflection *outModRefl = modObj->GetReflection();
const FieldDescriptor *field;

// Loop to iterate over all the fields
{
  field = outModDesc->FindFieldByName(tmp_name);
  std::string type = field->type_name();
  std::cout << "Type:" << type << std::endl;
}

应该是

...
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, 1000*900, pendingIntent);
...

第二,这里有一个功能可以完全执行我认为您要在此完成的任务(设置重复警报)。参见setRepeating()

答案 1 :(得分:0)

尝试使用android worker manager,因为它也与打ze模式一起使用。 https://developer.android.com/reference/androidx/work/PeriodicWorkRequest#min_periodic_interval_millis