BroadcastReceiver 收到不止一次

BroadcastReceiver received more than once

我的提醒APP有问题。

我在 StackOverfolow 上尝试了很多不同的解决方案,但 none 有效

请帮我详细解答。

Link to Project .代码如下:

设置提醒功能:

public void startAlarm(Calendar c) {
    
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, AlertReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, number, intent, PendingIntent.FLAG_ONE_SHOT);
    alarmManager.setExact(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
}

Class 接收广播:

public class AlertReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, intent.getAction(), Toast.LENGTH_LONG).show();

        MediaPlayer mediaPlayer = MediaPlayer.create(context, Settings.System.DEFAULT_NOTIFICATION_URI);
        mediaPlayer.start();
    }
}

我看到您在 Adapters onBindViewHolder 中设置了警报。这不是设置闹钟的正确位置。因为当你调用 notifyDataSetChanged 时它会再次调用 onBindViewHolder 并且它会一遍又一遍地设置相同的警报。