2013-04-02 37 views
2

我有一個DownLoadData類,它擴展了異步任務,用於從Web服務下載主數據。 SQLite數據庫中有10個主表,每個表都需要單獨的Web服務調用。所以,在DownLoadData任務中,我有10個線程。每個將調用相應的Web服務,接收數據,然後將其插入到相應的表中。在SQLite中使用事務在JellyBean中給出錯誤

我開始交易_onPreExecute()_並檢查是否所有線程都已完成後,我結束交易_onPostExecute()_

問題是,這種方法對ICS版本來說是完美的。它似乎不適用於果凍豆。該應用程序只與此logcat的消息掛每60秒:

04-02 14:53:23.263: W/SQLiteConnectionPool(1409): The connection pool for database '/data/data/com.c2info.liveorder/databases/DB' has been unable to grant a connection to thread 117 (AsyncTask #2) with flags 0x1 for 30.010002 seconds. 

04-02 14:53:23.263: W/SQLiteConnectionPool(1409): Connections: 0 active, 1 idle, 0 available. 

我開始和結束這樣的交易:

public LocalDatabase beginTransact() { 

    mdbHelper = new DatabaseHelper(ctx); 
    mdb = mdbHelper.getWritableDatabase(); 
    execSQL("BEGIN"); 
    return this; 
} 

public void endTransact() { 

    execSQL("END"); 
    mdbHelper.close(); 
} 

我還使用相同的數據庫實例進行的跨所有線程。

回答

0

我通過將每個單獨的線程視爲單個事務而不是單個事務處理所有線程來克服JellyBean中的問題