BroadcastReceiver重启后丢失数据

时间:2015-11-07 18:56:18

标签: android broadcastreceiver android-broadcast

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

如何设置闹钟,用户会收到DatePicker对话框提示

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

}

Broadcastreceiver onReceive()

public class AlertReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    String name = intent.getStringExtra("name");
    String releaseDate = intent.getStringExtra("releaseDate");
    int id = intent.getIntExtra("id", 0);

    createNotification(context, name + "releases on" + releaseDate, "Reminder", id);

  }
}

重新启动设备甚至关闭我的应用后,广播丢失了数据?而不是得到; 2015年7月11日的电影发布 ,我在null 上获得 null版本。 意图被删除? (不知道正确的用语)。它没有显示像“这部电影已经出局”这样的消息,而是显示“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>

1 个答案:

答案 0 :(得分:1)

是的,您的应用程序的内存状态在您的进程终止时会丢失(几乎任何时候您的应用都不在前台)。这不是Android独有的。

如果要保留数据,则必须以某种方式将其存储到磁盘。您应该阅读有关Android存储的官方指南:http://developer.android.com/guide/topics/data/data-storage.html