我的课程MyDBHandler
正在延长SQLiteOpenHelper
。
我想按照asynctask
的建议,通过developer.android.com
类对我的数据库执行添加,减去,更新,删除等操作。
我不明白我应该传递给我doInBackground
中的异步任务类方法(new DBTasksAsync.execute(?<--here))
的参数是什么
因为我将在我的Asynctask
getWritableDatabase()
和getReadableDatabase()
等操作
public class MyDBHandler extends SQLiteOpenHelper {
private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + MyDatabase.DatabaseEntry.TABLE_NAME + " (" +
MyDatabase.DatabaseEntry._ID + " INTEGER PRIMARY KEY," +
MyDatabase.DatabaseEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
MyDatabase.DatabaseEntry.COLUMN_NAME_SUBTITLE + TEXT_TYPE + " )";
private static final String SQL_DELETE_ENTRIES =
"DROP TABLE IF EXISTS " + MyDatabase.DatabaseEntry.TABLE_NAME;
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "MyDBHandler.db";
public MyDBHandler(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void doChanges(){
DBTasksAsync dbTasksAsync=new DBTasksAsync();
dbTasksAsync.execute();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
}
答案 0 :(得分:0)
在SQLiteOpenHelper中添加后台操作并不常见。您可以使它保持同步,并且正在使用它的组件将负责异步。或者,您可以将具有并发性的逻辑移动到单独的Repository类。
在后台执行整体数据库操作与执行任何其他短期后台操作没有太大差别。你可以找到很多文章: http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html,https://developer.android.com/training/best-background.html, https://developer.android.com/reference/android/content/AsyncTaskLoader.html