почему же мой код в пуле потоков вставить ноль в базу данных? - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу, чтобы пользователь 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();

}

если я использую одну команду вместо многих, запятая работает нормально,спасибо.

...