Android BroadcastReceiver在重新启动后丢失数据
在我重新启动设备甚至关闭应用程序后,数据似乎丢失了,我故意将数据传递给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
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>