我在我的android应用程序中实现了alarManager。此重复计划报警时间为5秒。但是一分钟后不再重复5秒钟。
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
intent.putExtra(Constants.Extra.SERVICE_TYPE, Constants.Extra.SERVICE_TRIGGER);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 123456789, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pendingIntent);
接收器类
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if(extras != null){
String type = extras.getString(Constants.Extra.SERVICE_TYPE);
if(type != null && type.equalsIgnoreCase(Constants.Extra.SERVICE_TRIGGER)){
//Triger
}
}
}
manifest.xml文件
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Receivers -->
<receiver android:name=".receiver.ServiceTrigger">
<intent-filter>
<action android:name="com.project.ServiceTrigger" />
</intent-filter>
</receiver>
答案 0 :(得分:1)
它对我有用
使用此
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(),
pendingIntent);
而不是
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pendingIntent);
让我知道它是否适合你
答案 1 :(得分:1)
从Android 5.1(API版本22)开始,重复警报的最短时间为1分钟。如果您需要在一分钟内完成工作,只需直接设置闹钟,然后从该闹钟的处理程序中设置下一个闹钟等。如果您需要在5秒钟内完成工作(例如),请将其发布到处理程序而不是使用AlarmManager。
这里有好的文件:
https://en.proft.me/2017/05/7/scheduling-operations-alarmmanager-android/
答案 2 :(得分:1)
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
int ALARM_TYPE = AlarmManager.RTC_WAKEUP;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
am.setExactAndAllowWhileIdle(ALARM_TYPE, calendar.getTimeInMillis(), pendingIntent);
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
am.setExact(ALARM_TYPE, calendar.getTimeInMillis(), pendingIntent);
else
am.set(ALARM_TYPE, calendar.getTimeInMillis(), pendingIntent);