使用AlarmManager和BroadcastReceiver存储文件

时间:2014-02-24 03:39:30

标签: java android broadcastreceiver alarmmanager

我有一个应用程序每分钟执行一项任务,然后将该信息添加到存储在应用程序MainActivity中的ArrayList。当应用程序运行时,即使在后台运行,这也很有效。但是,当我销毁应用程序并让AlarmManager在后台每分钟重复一次时,由于某种原因,每次添加新信息时都会擦除列表,这意味着下次打开应用程序时,ArrayList中始终只有一个对象,这是最后一个由最后一个AlarmManager创建的。

此事件每分钟都在BroadcastReceiver中处理,该事件调用main活动中的方法以添加到存储在那里的arraylist。这可能是为什么我的数据在应用程序未运行时被擦除的原因?每次我想要将新数据添加到列表中时,我都会让应用程序从存储中获取当前列表,该列表会正确获取列表,直到应用程序未运行,然后每次都会获取一个空列表。

2 个答案:

答案 0 :(得分:2)

当您的应用处于后台时,您的arraylist将为空。您应该将您的arralist存储到sharedpreferences.so每当您需要检索数据时,您就可以从shareprefernce获取数据。

请查看以下链接:

reference link

我希望它对你有用。

答案 1 :(得分:0)

当您的应用关闭时,闹钟管理器不会忽略先前设置的闹钟。因此它将按照最后设定的时间调用。 因此,请确保在您关闭应用时取消之前设置的闹钟,然后您可以在应用启动时或根据需要启动闹钟。