我构建了一个简单的应用程序,它接受用户输入的数据并将其保存到本地sqlite数据库。如果wifi连接可用,它将把数据传输到托管在远程服务器上的REST服务。
我已完成上述部分并且工作得非常好。如果WIFI不可用,它将继续前进,并期望用户获得新数据。
当无线网络可用时,我已经注册了一个广播接收器,它将点击我的数据库并获取存储的值并将它们发送到远程服务器。
我想知道,当广播接收器试图查询我的数据库时,如果用户同时输入数据并且它被保存在同一个数据库中,它是否会触发SQLException。
我记得,一次只能有一个服务访问SQL实例。如果它会造成问题我该如何克服它。我看过ContentProviders,这会是解决方案吗?
我对android很新。请指教。
答案 0 :(得分:1)
你可能想看看这个。
What are the best practices for SQLite on Android?
对我来说,无论您是否需要向外部应用程序提供数据,我建议您在需要数据库时始终与DatabaseHelper一起创建ContentProvider。实际上并不困难,我用来构建我的ContentProvider的最佳参考是DeskClock,Android的官方应用程序。
修改强> 作为旁注,您应该考虑创建一个由Boardcast接收器调用的IntentService来完成工作,因为广播接收器不应该用于长时间运行的任务,比如将内容发送到服务器。
当它在主线程上运行时,你永远不应该执行长时间运行 其中的操作(系统超时10秒) 允许在考虑接收器被阻止和候选人之前 被杀死了。