我想在我的應用程序中使用WebService進行事件同步來執行自定義日曆。異步任務鎖數據庫
一切都很好(呃,不是真的)。
日曆活動,以獲得當月的所有活動,並存儲在數據庫中啓動一個AsyncTask
和onPostExecute
方法更新到每天適當標記的看法。當用戶獲取到日曆活動,然後迅速回到主活動幾次
我的問題來了,讓我們說,例如
Main Activity
>Calendar Activity
(按返回鍵)>Main Activity
>Calendar Activity
(按後退按鈕)> ...
此時活動凍結由於database lock has not been available for 30 sec.
或應用崩潰由於一個SQLiteConstraintException: error code 19
編輯:
SQLiteConstraintException
行爲不再發生
由於更新是在我的應用程序非常重要,我每次重新輸入日曆活動我刪除數據庫與服務器的新數據,即使重新進行填充時間強硬是一樣的,在這一點上是鎖定的地方。
EDIT:
我已經改變
Delete > Insert
樣式:Update
所有數據(設定flag
列= 0)>Insert
新數據(設定flag
柱= 1)>Delete
(其中flag
柱= 0)
我已經試過this解決方案取消關於Activi的AsyncTask
TY沒有成功
結束,我相信這個問題是我不完全明白我在做什麼,所以我失去了一些東西真的很重要(或基本)的過程。
任何幫助改善我的代碼或只是指着我正確的方向,將不勝感激。
在此先感謝!
EDIT:
我的應用程序具有其
Aplication
是負責創建單個數據庫連接(getWriteableDatabase();
)和這種獨特的連接如的可達槽方法。
'SQLiteConstraintException'應該與數據庫鎖定問題無關。異常是你的代碼中的一個錯誤,比如在sqlite表中定義了'NOT NULL'的地方插入'null'。 http://stackoverflow.com/questions/9599809/does-yieldifcontendedsafely-lose-the-benefits-of-a-transaction可能是鎖問題的解決方案 – zapl
@zapl你是對的,'SQLiteConstraintException'因爲另一個拋出問題並沒有涉及到這個問題。現在已經解決了。 謝謝! –