2013-02-21 89 views
0

我的应用程序有一个奇怪的问题。Android SQlite访问速度不够快?

我必须从电话1上的数据库发送数据库条目到电话2上的数据库。从最初发送只有缺失条目的意义上说,这个前提是聪明的,因此如果在数据库1中有10个条目并且在数据库2中我有0个,它发送10个条目,但如果只有5个是通过电话2接收的(出于任何原因),下次只有5个缺失条目被发送。使用UDP消息逐个发送条目。 事实是,我永远不会收到在第二次手机上的所有条目的第一次尝试,我不得不尝试几次,每次我只能收到其中3-4。消息是可以的,我可以在发送端和接收端看到它们,所以我想这是一个数据库问题!有可能数据库无法以足够快的速度添加行,而不会影响到达的消息速率?

+0

你为什么使用UDP?如果你使用TCP(保证传送),你不会有这个问题。 – mvp 2013-02-21 17:32:36

+0

我非常怀疑SQLite是哪里掉球。我建议你在接收端添加一些日志记录,以确定邮件在什么时候被丢弃。查看是否实际上为每条消息运行了'INSERT'语句。你是在按顺序处理它们,还是为每一个新的线程踢开? – Blumer 2013-02-21 17:32:45

+0

我正在使用UDP,因为我认为TCP并不是必要的,因为我之前对TCP服务器有问题:)问题不在发送/接收部分,因为从我的日志中我可以看到所有消息都已正确发送,接收。 – phcaze 2013-02-21 17:44:19

回答

3

听起来好像您在发送数据库条目之间没有足够长的时间。您可以延长该时间或在单个事务中执行所有插入操作。当你不使用交易时,完全有可能插入花费一秒以上。

db.beginTransaction(); 
    try { 
    // Insert all the records here 
    db.setTransactionSuccessful(); 
    } finally { 
    db.endTransaction(); 
    } 
+0

我正在尝试实施您的解决方案,我会告诉您,谢谢。看起来更好的日志,我可以看到UDP消息在相同的时间到达(现在3条消息,1条1毫秒后3条消息)! – phcaze 2013-02-22 06:42:57