Java Firebase Android和广播接收器
我使用setInexactRepeating将alarm manager设置为每天有三次三个通知 既然我在这里找不到答案,我会问。我从firebase数据库的广播接收器中获取用户的存储图像和用户名,广播接收器位于Alarm Manager中使用的PendingEvent中,带有用户ID和其他字符串。现在的问题是,当应用程序被终止时,intent extra是否会存储在Alarm Manager中使用的PendingEvent中,而当应用程序终止时,广播接收器是否仍能访问数据库。如果不是的话,我该如何解决 下面是我在receiver中获取用户ID的代码:Java Firebase Android和广播接收器,java,android,firebase,broadcastreceiver,android-alarms,Java,Android,Firebase,Broadcastreceiver,Android Alarms,我使用setInexactRepeating将alarm manager设置为每天有三次三个通知 既然我在这里找不到答案,我会问。我从firebase数据库的广播接收器中获取用户的存储图像和用户名,广播接收器位于Alarm Manager中使用的PendingEvent中,带有用户ID和其他字符串。现在的问题是,当应用程序被终止时,intent extra是否会存储在Alarm Manager中使用的PendingEvent中,而当应用程序终止时,广播接收器是否仍能访问数据库。如果不是的话,我该
String selection = intent.getStringExtra("selection");
String selected_user = intent.getStringExtra("selected_id");
String unique_id = intent.getStringExtra("unique_id");
String current_user_id = intent.getStringExtra("current_id");
mMyGroupRef = FirebaseDatabase.getInstance().getReference().child("My Group").child(current_user_id).child(selection);
mOtherUserMyGroupRef = FirebaseDatabase.getInstance().getReference().child("My Group").child(selected_user);
mMyGroupRef.addListenerForSingleValueEvent(new ValueEventListener() { //etc...
报警管理器(我已将mScheduleTask设置为静态变量,在onCreate中初始化为mScheduleTask=(AlarmManager)对象。requireNonNull(getContext()).getSystemService(Context.Alarm_SERVICE);)调用:
然后,如果数据库中存在,我就调用ShowNotification方法,该方法使用毕加索图书馆中使用的用户名和图像链接
当我启动应用程序并选择我希望一天关闭三次通知的用户时,一切正常。我确实收到了它们,但有时发生的是
calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(System.currentTimeMillis());
calendar1.set(Calendar.HOUR_OF_DAY, 8);
calendar2 = Calendar.getInstance();
calendar2.setTimeInMillis(System.currentTimeMillis());
calendar2.set(Calendar.HOUR_OF_DAY, 14);
calendar3 = Calendar.getInstance();
calendar3.setTimeInMillis(System.currentTimeMillis());
calendar3.set(Calendar.HOUR_OF_DAY, 18);
Intent intent = new Intent(getContext(), AutoMessageReceiver.class);
intent.putExtra("unique_id", "" + uniqueID);
intent.putExtra("selection", selection);
intent.putExtra("selected_id", user_id);
intent.putExtra("current_id", currentID);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(getContext(), uniqueID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(getContext(), uniqueID - 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent pendingIntent3 = PendingIntent.getBroadcast(getContext(), uniqueID - 2, intent, PendingIntent.FLAG_UPDATE_CURRENT);
mScheduleTask.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent1);
mScheduleTask.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar2.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent2);
mScheduleTask.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar3.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent3);