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 并且它会一遍又一遍地设置相同的警报。
我的提醒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 并且它会一遍又一遍地设置相同的警报。