房间数据库

时间:2018-06-08 20:48:07

标签: android android-room

我读到在runInTransaction方法中的表中执行多个动作,它将把它作为一个处理。在这个例子中,观察者将被通知两次,因为最后两个将向观察者提供。理想情况下,它应该只通知观察者一次。有什么想法吗?

 @Dao
 public interface RepoDao {

    @Query("SELECT * FROM Table")
    LiveData<List<Table>> getAll();

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insert(List<Table> table);
}

主要活动

repo = ((BasicApp)getApplication()).getRepository();

repo.insertDataFromNetwork();

((BasicApp)getApplication()).getDatabase().repoMethods()
.getAll().observe(this, new Observer<List<Table>>() {
        @Override
        public void onChanged(@Nullable List<Table> message) {
            Log.d("hello");

        }
    });;

insertDataFromNetwork

mDatabase.runInTransaction(new Runnable() {
                   @Override
                   public void run() {

                           mDatabase.repoMethods().insert(....);
                           mDatabase.repoMethods().insert(....);
                           mDatabase.repoMethods().insert(....);
                           mDatabase.repoMethods().insert(....);
                           mDatabase.repoMethods().insert(....);

                       }
                   }
               });

0 个答案:

没有答案