我正在製作一個使用SQLite數據庫存儲數據的應用程序。有時我的應用程序在訪問數據庫的活動之間切換時凍結,特別是當開始的活動在onCreate()方法中訪問數據庫時。Android:應該以異步方式訪問應用程序中的數據庫嗎?
我應該:
- 訪問使用異步任務或類似
- 使用某種管道的控制數據庫請求的數據庫?
請你指點我相關的代碼示例,如果nessecary請嗎?
在此先感謝!
我正在製作一個使用SQLite數據庫存儲數據的應用程序。有時我的應用程序在訪問數據庫的活動之間切換時凍結,特別是當開始的活動在onCreate()方法中訪問數據庫時。Android:應該以異步方式訪問應用程序中的數據庫嗎?
我應該:
請你指點我相關的代碼示例,如果nessecary請嗎?
在此先感謝!
我有一個更好的解決方案:
我使用的是管道系統,在那裏我有張貼到,它們會在他們發佈的順序執行管線可運行。我覺得這個解決方案易於管理,整潔而高效。
流水線的一個例子是在這裏:http://mindtherobot.com/blog/159/android-guts-intro-to-loopers-and-handlers/
是的,您必須使用異步訪問,這是最佳實踐。 SDK特別爲此包含AsynchTask。
BuyAsyncTask extends AsyncTask<Item, Void, Item> {
@Override
protected Item doInBackground(Item... params) {
..use DB here
}
@Override
protected void onPreExecute() {
..some easy operation befor start thread
}
@Override
protected void onPostExecute(Item resultTask) {
..do what you want, thread is finish
}
}
你D如何建議我通過更新到異步任務的值,因爲我需要說我是否想要創建,更新,讀取或刪除,並通過數據來處理數據庫。我應該使用捆綁嗎? –
另外,使用異步任務意味着我必須在每個希望使用數據庫的類中都有一個AsyncTask,這是正確的嗎? –
這就像是一個人想的命令。您可以編寫InsertAynckTask,更新...等,或者您可以使用BuyAsynckTask,Sell ..等。我認爲最後是最好的解決方案。在onPreExecute中,您可能會獲得dbDAO的實例,並在doInBackground中使用insert/update..etc。 – IronBCC