Я хочу, чтобы пользователь sheardtext намеренно вошел в мое приложение, и я хочу добавить его в базу данных с помощью Google Room. Мне нужно составить таблицу один раз для категории, а другую - для заметок.когда я использую одну команду в потоке, она работает правильно, но когда я хочу использовать много команд.некоторые команды работают некорректно.
в качестве примера sheardText заполнен, но помещает ноль в базу данных.или метод updateCat () не помещает 1 для подсчета столбца.
@Entity
public class cat {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "cat_name")
private String name;
@ColumnInfo(name = "cat_count")
private int count;
}
@Entity
public class note {
@PrimaryKey(autoGenerate = true)
private int id;
private String text;
private int catId;
}
@Override
public void passNameOfNewItem(final String name) {
catDatabase =
Room.databaseBuilder(getApplicationContext(),catDatabase.class,
DATABASE_NAME)
.allowMainThreadQueries()
.build();
ExecutorService executorB = Executors.newFixedThreadPool(4);
executorB.execute(new Runnable() {
@Override
public void run() {
catDatabase.catDao().insertCatToDatabese(new cat(name));
}
});
final cat[] c = {new cat()};
final int catId = c[0].getId();
executorB.execute(new Runnable() {
@Override
public void run() {
c[0] = catDatabase.catDao().returnCatByName(name);
}
});
executorB.execute(new Runnable() {
@Override
public void run() {
catDatabase.noteDao().insertNote(new note(sharedText, catId));
}
});
executorB.execute(new Runnable() {
@Override
public void run() {
catDatabase.catDao().updateCat(new cat(catId, 1));
}
});
executorB.shutdown();
finish();
}
если я использую одну команду вместо многих, запятая работает нормально,спасибо.