#java #android #android-asynctask
#java #Android #android-asynctask
Вопрос:
У меня есть MyDBHandler
расширение класса SQLiteOpenHelper
.
Я хочу выполнить добавление, вычитание, обновление, удаление и т. Д. В моей базе данных Через asynctask
класс, как предложено developer.android.com
. Я не понимаю, какие параметры я должен передать методу класса async task doInBackground
в my (new DBTasksAsync.execute(?<--here))
, поскольку я буду в дальнейшем реализовывать такие операции, как getWritableDatabase()
и getReadableDatabase()
в моей Asynctask
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);
}
}
Комментарии:
1. В чем ваш вопрос?
2. ну, может быть, вместо
AsyncTask
вас следует использоватьAsyncQueryHandler
?
Ответ №1:
Добавление фоновых операций в ваш SQLiteOpenHelper не является обычной практикой. Вы можете сохранить ее синхронной, а компоненты, которые ее используют, будут отвечать за асинхронно. Или вы можете переместить логику с параллелизмом в отдельный класс репозитория.
В целом выполнение операций с базой данных в фоновом режиме мало чем отличается от выполнения любых других краткосрочных фоновых операций. И вы можете найти множество статей по этому поводу: 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