首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在房间数据库类中获取或观察livedata

如何在房间数据库类中获取或观察livedata
EN

Stack Overflow用户
提问于 2019-04-01 01:20:27
回答 1查看 990关注 0票数 0

我已经创建了一个实体和相应的dao。在dao类中,我有一个方法:

代码语言:javascript
复制
@Query("select * from Book")
LiveData<List<Book>> getAll();

我在活动和片段中观察到了这些实时数据。现在,我想在数据库打开它的连接时获得图书列表。我希望在房间数据库类中执行此操作。实际上是在onOpen()方法中。

代码语言:javascript
复制
public abstract class AppDatabase extends RoomDatabase {
...
    public static synchronized AppDatabase getInstance(Context context) {
        if (instance == null) {
            instance = Room.databaseBuilder(context.getApplicationContext(),
                    AppDatabase.class, DATABASE_NAME)
                    .fallbackToDestructiveMigration()
                    .addCallback(roomCallback)
                    .build();
        }
        return instance;
    }
...
    private static RoomDatabase.Callback roomCallback = new 
        RoomDatabase.Callback() {
        @Override
        public void onCreate(@NonNull SupportSQLiteDatabase db) {
            super.onCreate(db);
            new PopulateDbAsyncTask(instance).execute();
        }

        @Override
        public void onOpen(@NonNull SupportSQLiteDatabase db) {
            super.onOpen(db);
            // get book list information and do some task
        }
    };
}

我遵循android mvvm架构模式。在这一点上我有一些问题。是否可以在onOpen()方法中获取值或观察livedata(book)?我知道我可以通过在dao类中编写另一个不返回livedata的方法来做到这一点,但是这是一个好的实践吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-01 01:55:43

您可以通过调用dao.getAll()来获取liveData。但一般来说,不推荐这样做。您将从模型中获取liveData。查看此示例,了解处理数据的推荐方法和liveData的用法。https://github.com/googlesamples/android-architecture-components/tree/master/BasicSample

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55443460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档