当我的应用程序从服务器获取用户的日程安排时,它会执行以下操作:
这需要2-4秒,这取决于时间表的大小。
但是,如果用户从任务窗口中杀死应用程序,那么它就会立即被删除,在循环的中间执行这些操作。这意味着一半的条目可以输入到数据库中,而不是一半。或者一半的通知/日历事件将被取消/创建,另一半则不会。
我试了很多东西
IntentService -它会随着活动一起被杀死(因为它们属于同一个进程)Service的android:process=":remote"使服务属于另一个进程,但事实证明,这两个进程都被杀死了。Service的android:process=":remote",然后让它在onStartCommand上返回START_REDELIVER_INTENT,但是它会立即被杀死,然后从顶部开始。我还没有尝试过的唯一一件事就是使用通知startForeground,但这似乎是解决这个问题的一种非常残忍的方式,而且我仍然不确定这个过程是否会继续存在,即使应用程序被杀死了。
好的,也许我给DB操作添加了一些事务,如果它们被中断,让DB回滚它们。但是本地通知和日历事件呢,更不用说了--我想知道如何解决各种情况下的这个问题。
发布于 2016-01-08 17:06:27
当用户将您的任务从最近段中删除时,将调用Service#onTaskRemoved(意图)。你可以用这种方法做一些事情,但我不知道如果你试图等待其他的事情完成,会发生什么。
您已经提到了DB的交易记录。其他数据存储通常不是事务性的。你必须把你自己的交易放在上面。一个粗略的解决方案是编写一个单独的日志文件,其中包含即将写入的日历事件,将它们写入日历,然后删除日志。如果应用程序启动时日志存在,则删除其中的任何日历事件。
https://stackoverflow.com/questions/34682162
复制相似问题