这个问题通常出现在使用Alarm Manager创建多个闹钟时。可能由于以下原因导致Alarm Manager无法工作:
当设置多个不同的PendingIntent时,您需要确保它们都有一个不同的requestCode。
如果您的应用被杀死并且没有重新启动,那么您的闹钟将无法工作。因此,您需要使用一种持久性方案来重新调度您的闹钟,例如使用SharedPreferences或SQLite数据库来保存闹钟信息。
以下是一个参考示例:
//创建SharedPreferences对象 SharedPreferences prefs = getSharedPreferences("myPrefs", MODE_PRIVATE); //获取闹钟数量 int alarmCount = prefs.getInt("ALARM_COUNT", 0);
//创建递增的requestCode int requestCode = alarmCount++;
//创建闹钟时间 Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute);
//创建PendingIntent Intent intent = new Intent(this, AlarmReceiver.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
//设置Alarm Manager AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
//保存闹钟信息 SharedPreferences.Editor editor = prefs.edit(); editor.putInt("ALARM_COUNT", alarmCount); editor.apply();