Я выполняю запрос INSERT INTO, который принимает длинные параметры, но я получаю «Невозможно получить доступ к базе данных в главном потоке, поскольку он может потенциально заблокировать пользовательский интерфейс на длительный период времени». ошибка и считаю, что мне нужно выполнить это как задачу Asyn c, но я не могу найти шаблон для подражания. Я искал запрос Вставить, но мне нужно указать pu sh в двух длинных значениях, которые будут использоваться запросом, где это значение передается в массиве примечаний или что-то в этом роде:
private static class InsertNoteRunAsyncTask extends AsyncTask<Note, Void, Void> {
private NoteDao noteDao;
private InsertNoteRunAsyncTask (NoteDao noteDao) {
this.noteDao = noteDao;
}
@Override
protected Void doInBackground(Note... notes) {
noteDao.insert(notes[0]);
return null;
}
}
Как запустить @Query с двумя параметрами асинхронно?
Обновление У меня нет .allowMainThreadQueries () при построении базы данных:
public static synchronized AppDatabase getInstance(Context context) {
if (instance == null)
{
instance = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, "user-database")
.fallbackToDestructiveMigration()
.addCallback(roomCallback)
.build();
}
return instance;
}