Android BroadcastReceiver在重新启动后丢失数据

Android BroadcastReceiver在重新启动后丢失数据,android,broadcastreceiver,android-broadcast,Android,Broadcastreceiver,Android Broadcast,在我重新启动设备甚至关闭应用程序后,数据似乎丢失了,我故意将数据传递给BroadCastReceiver 如何设置报警,用户会收到日期选择器对话框的提示 public void setAlarm(View view) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, yearDate); cal.set(Calendar.MONTH, monthDate); cal.set(Calen

在我重新启动设备甚至关闭应用程序后,数据似乎丢失了,我故意将数据传递给BroadCastReceiver

如何设置报警,用户会收到日期选择器对话框的提示

public void setAlarm(View view) {

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, yearDate);
    cal.set(Calendar.MONTH, monthDate);
    cal.set(Calendar.DAY_OF_MONTH, dayDate);
    long alertTime = cal.getTimeInMillis();

    Intent alertIntent = new Intent(this, AlertReceiver.class);

    alertIntent.putExtra("name", name);
    alertIntent.putExtra("id", mainId);
    alertIntent.putExtra("releaseDate", releaseDate);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime,
            PendingIntent.getBroadcast(this, mainId, alertIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT));

}
BroadcastReceive()

在我重新启动设备甚至关闭应用程序后,广播会丢失数据吗?而不是得到电影于2015年11月7日上映,我在null上映了空版本。 意图被删除了吗?(不知道正确的术语)。它没有显示“THIS movie is out”这样的消息,而是显示“null is out”,并且只显示一个通知,不超过一个,因此BroadcastReceiver只提醒我上次设置提醒的最后一部电影,谢谢

我的Android清单:

<receiver android:name=".AlertReceiver"
              android:enabled="true">
        <intent-filter android:priority="100">
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

是的,当进程死亡时,应用程序的内存状态将丢失(几乎在应用程序不在前台的任何时候都可以这样做)。这不是Android独有的


如果您想保留数据,必须以某种方式将其存储到磁盘。你应该阅读Android存储的官方指南:

谢谢你,伙计!因此,我将名称、id和发布日期存储在
SharedReference
中,然后在onReceive()中获取数据,非常简单。但是在onReceive()方法中,我如何知道如何从这个特定的
SharedReference
获取数据存在一个问题,也许我可以尝试使用id来实现这一点?每部电影都有一个独特的idSharedPreferences,它更适合于“设置”——类型值——您将有一组已知的键,每个键有一个值。您可能可以通过使用
getAll()
方法使其工作,但实际上,我认为您需要使用一个。好的,谢谢,您认为我可以获得onReceive()中的主ID PendingEvent请求代码吗?忘了将您标记为最佳答案总比从不好lol;)快乐编码!
<receiver android:name=".AlertReceiver"
              android:enabled="true">
        <intent-filter android:priority="100">
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>