两个应用程序使用同一个数据库。

6 浏览
0 Comments

两个应用程序使用同一个数据库。

我已经创建了一个应用程序和服务。

这两个应用程序使用了一个放在SD卡上的单一数据库。

我的服务会每30秒查找新数据并将其推送到服务器。同时,用户使用我的应用程序向数据库中输入一些数据/记录。

如果网络良好,一切都正常,但如果网络断开,我的应用程序无法将记录插入到数据库中,因为服务正在等待服务器的响应。

我已经使用了单例类来纠正我的错误,但仍然遇到相同的问题。如何解决这个问题?需要各位的帮助。

0
0 Comments

在上述内容中,出现了一个问题:当一个线程正忙于与远程服务器通信时,另一个线程不能将数据存储到SD卡中。为什么会出现这个问题呢?

问题的原因是由于网络访问线程中的某个同步锁设置得过宽,当这不是必需的时候,你会将数据库锁住。解决方法是将网络访问代码移到不会对数据库进行加锁的同步语句或方法之外,尽快地开始和结束数据库操作,期间不进行其他活动。

另一个问题是需要检查新数据是否已更新到服务器。所以我每30秒打开一次数据库,如果从服务器返回的响应失败,就会锁定数据库。解决方法是在打开数据库之前先通过网络与远程服务器通信,并在已获得响应后再打开数据库。无论网络状况好坏,甚至是断网,都应该在开始使用数据库之前完成与服务器的通信。

这个问题是由于并行执行引起的。似乎Sqlite不是线程安全的。

为了解决这个问题,我们应该将网络访问代码移到数据库加锁的同步语句或方法之外,并在与服务器通信后再打开数据库。此外,需要注意Sqlite不是线程安全的。

0
0 Comments

问题的原因是两个应用程序同时使用同一个数据库,导致了连接问题。解决方法是在HTTP请求中设置超时限制,并在超时后重新尝试连接,或者监听网络连接的变化。同时,需要注意问题标题与问题本身的相关性,避免产生歧义。感谢回复和建议,虽然我已经添加了超时限制,但问题仍然存在。

0