2013-02-21 158 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