如何在 Android 内只触发一次警报?
How to trigger an alarm only once in Android?
我设置了当用户登陆某个activity时的警报,它会在一定时间后触发。
我如何检查此警报是否已被触发,以便在用户返回此 activity 时不会再次设置?
如果闹钟已经安排好但没有触发,我只能阻止再次设置闹钟:
alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_NO_CREATE);
if (alarmIntent != null) {
// Alarm is already set
return;
}
alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0);
但是如果它已经被触发,这将不起作用,因为警报将在之后被删除所以 alarmIntent
将是 null
您可以使用共享首选项来检查它是否已设置。
if(!setFlag)
{
Intent myIntent = new Intent(FirstActivity.this, LogoutService.class);
pendingIntent = PendingIntent.getService(FirstActivity.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 10); //Minutes
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
更改 PendingIntent PendingIntent.FLAG_CANCEL_CURRENT
alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
您可以在第一次闹钟 运行 时创建一个文件,在下次闹钟 运行 时,您可以检查该文件是否已经存在,而不必 运行再次报警
我设置了当用户登陆某个activity时的警报,它会在一定时间后触发。 我如何检查此警报是否已被触发,以便在用户返回此 activity 时不会再次设置? 如果闹钟已经安排好但没有触发,我只能阻止再次设置闹钟:
alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_NO_CREATE);
if (alarmIntent != null) {
// Alarm is already set
return;
}
alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0);
但是如果它已经被触发,这将不起作用,因为警报将在之后被删除所以 alarmIntent
将是 null
您可以使用共享首选项来检查它是否已设置。
if(!setFlag)
{
Intent myIntent = new Intent(FirstActivity.this, LogoutService.class);
pendingIntent = PendingIntent.getService(FirstActivity.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 10); //Minutes
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
更改 PendingIntent PendingIntent.FLAG_CANCEL_CURRENT
alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
您可以在第一次闹钟 运行 时创建一个文件,在下次闹钟 运行 时,您可以检查该文件是否已经存在,而不必 运行再次报警