2013-09-27 33 views
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. 

如果是試圖寫入同一個表(即我讀書,後來將截斷)另一個線程,然後做上面的代碼看起來可以處理這種情況?

謝謝!

回答

0

您需要更多這方面的投入從這裏:

另外的AsyncTask,當然。

+0

我不確定,如果我正確地跟着你的答案。我的getInstance()函數是同步的。而我的代碼沒有任何活動。它是一種在後臺運行的服務。所以我認爲我不需要AsyncTask。就插入而言,線程獲取SQLiteOpenHelper的實例並運行插入語句。 – user2747986

+0

你需要什麼才能使表中的變化(截斷或其他)只能從一個線程發生?如果是這樣,sychronized方法將有所幫助,並閱讀Android多線程文章。 – user2824867

相關問題