Java Firebase Android和广播接收器

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中,而当应用程序终止时,广播接收器是否仍能访问数据库。如果不是的话,我该

我使用setInexactRepeating将alarm manager设置为每天有三次三个通知

既然我在这里找不到答案,我会问。我从firebase数据库的广播接收器中获取用户的存储图像和用户名,广播接收器位于Alarm Manager中使用的PendingEvent中,带有用户ID和其他字符串。现在的问题是,当应用程序被终止时,intent extra是否会存储在Alarm Manager中使用的PendingEvent中,而当应用程序终止时,广播接收器是否仍能访问数据库。如果不是的话,我该如何解决

下面是我在receiver中获取用户ID的代码:

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);