我具有每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()中重复了上面的相同操作,以在触发后再次设置它。
有什么想法是什么错误,我该怎么做才能使其正确重复?
答案 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