我编写了一个应用程序,可以在sqlite db中保存一些数据。我想定期将此数据发送到服务器,然后在sqlite中截断表(以便应用程序不会填满设备上的空间)。
我正在使用SQLiteOpenHelper的singleton对象(我读过它是线程安全的)。
所以我的问题是 - 以下代码看起来没问题 -
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.
如果有另一个线程试图写入同一个表(我正在阅读并稍后将被截断),那么上述代码是否可以处理该场景?
谢谢!