我的应用程序在从服务器获取用户的日程安排时执行以下操作:
这需要2-4秒,具体取决于时间表的大小。
但是,如果用户从任务窗口中杀死应用程序,它会立即在循环中间消除,执行其中任何一个。 这意味着可以在数据库中输入一半条目,而不是。 或者一半的通知/日历事件将被取消/创建,另一半 - 不是。
我尝试了很多东西
IntentService
- 它会随着活动一起被杀死(因为它们属于同一个进程)Service
和android:process=":remote"
使服务属于另一个进程,但事后证明两个进程都被杀死了Service
与android:process=":remote"
一起使用,然后在START_REDELIVER_INTENT
上返回onStartCommand
,但会立即再次被杀,然后从顶部开始。我唯一没有尝试的是startForeground
使用通知,但这似乎是解决这个问题的一种非常强力的方法,我仍然不确定我是否能保证这个过程将会即使应用程序被杀,它仍然活着。
好吧,也许我可以在数据库操作中添加一些事务,如果数据库被中断,让数据库回滚。但是本地通知和日历事件呢,更不用说 - 我想知道如何解决各种情况下的这个问题。
答案 0 :(得分:1)
Service#onTaskRemoved(Intent)。你可以用这种方法做点什么,但我不知道如果你试图等待别的事情完成会发生什么。
您已经为数据库提到了transactions。其他数据存储通常不是事务性的。您必须将自己的交易分层。一个粗略的解决方案是编写一个单独的日志文件,其中包含要写入的日历事件,将它们写入日历,然后删除日志。如果应用程序启动时存在日志,请删除其中的所有日历事件。