0
我寫了一個應用程序,在sqlite數據庫中保存一些數據。我希望定期將這些數據發送到服務器,然後在sqlite中截斷表(這樣應用程序不會填滿設備上的空間)。Android的SQLite數據庫加載數據到服務器和截斷
我正在使用SQLiteOpenHelper(我讀過的是單線程安全的)的單例對象。
所以我的問題是 - 它下面的代碼看起來確定 -
SQLiteOpenHelper openHelper = MyDBOpenHelper.getInsance();
SQLiteDatabase database = openHelper.getWritableDatabase();
database.beginTransaction();
Cursor cursor = database.rawQuery(SELECT_ALL_TABLE1_STMT, null);
while(cursor.moveToNext()) {
// save result in tmp list/buffer
}
database.execSQL(DELETE_ALL_TABLE1_STMT);
database.endTransaction();
database.setTransactionSuccessful();
// send data to server
// and repeat the process for rest of the tables.
如果是試圖寫入同一個表(即我讀書,後來將截斷)另一個線程,然後做上面的代碼看起來可以處理這種情況?
謝謝!
我不確定,如果我正確地跟着你的答案。我的getInstance()函數是同步的。而我的代碼沒有任何活動。它是一種在後臺運行的服務。所以我認爲我不需要AsyncTask。就插入而言,線程獲取SQLiteOpenHelper的實例並運行插入語句。 – user2747986
你需要什麼才能使表中的變化(截斷或其他)只能從一個線程發生?如果是這樣,sychronized方法將有所幫助,並閱讀Android多線程文章。 – user2824867