我有一个IntentService,它会定期(每天一次)擦除实际的数据库并用最近的feed重新填充它,之后会向用户发送通知。 我遇到的问题是当用户在IntentService轮询服务器的同时使用应用程序时。 他正在查看数据库中不再存在的旧订阅源,如果他点击任何项目,应用程序崩溃。 我想知道是否有办法在目前没有使用该应用程序时连接服务器。
答案 0 :(得分:0)
有几种方法。如果它在错误的时间运行,你想跳过这一天,还是把它关掉?
如果你想跳过它(最简单的) - 在Service类中有一个静态变量,当调用Activity的onCreate时它被设置为true,而在onDestroy中则为false。让服务在触摸数据库之前检查该变量的值。
如果你想把它关闭,同样的想法可行,但使用信号量。
如果活动已在运行,则可以停止服务。相反的顺序仍会崩溃。要解决这个问题,您需要以与服务相同的方式检查您的活动,但是如果服务已在运行,请设置一个“稍后再次尝试同步”的UI或类似的内容。