Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在房间数据库类中获取或观察livedata

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Query("select * from Book")
LiveData<List<Book>> getAll();

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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-03-31 17: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

复制
相关文章
WPF如何在子线程或其他类中操控控件
一开始使用WPF界面的时候,会有这样的需求就是在后台更新控件,以完成列表更新,计时器,进度条等功能,但WPF这边架构限制,决定子线程是不安全的,如果创建子线程直接操作控件就会出错。
zls365
2021/03/16
2K0
Android从零开始搭建MVVM架构(4)——LiveData
Livedata 是 Google 推荐的 Android 架构组件之一,是一个存放可被观察的数据持有类,有生命周期感知功能,解决了android开发者需要去手动处理生命周期的痛点。 比如当我们使用 Retrofit+Rxjava处理接口回调数据时,需要考虑activity 或 fragment 生命周期,以解决 onStop 或 onDestory之后回调数据的问题。现在只需要 Retrofit+Livedata 就好,其他的 Livedata 帮你做了。
老马的编程之旅
2022/06/22
2.4K0
使用Lifecycle-Aware组件优化项目
Android Architecture Components 是一组库,可帮助您设计健壮、可测试和可维护的应用程序。包含以下几个组件模块:
陈宇明
2020/12/16
9250
LiveData的优势
LiveData 具有生命周期感知能力,观察时会传入对应的LifecycleOwner。这种感知能力可确保LiveData 仅更新处于活跃生命周期状态的应用组件观察者。
小柔
2022/10/09
1.3K0
Jetpack:在数据变化时如何优雅更新Views数据
三个步骤就定义了使用LiveData的方式,从步骤可以看出,使用了观察者模式,当LiveData对象持有数据发生变化,会通知对它订阅的所有处于活跃状态的订阅者。而这些订阅者通常是UI控制器,如Activity或Fragment,以能在被通知时,自动去更新Views。
Android技术干货分享
2019/07/02
3K0
关于如何在Python中使用静态、类或抽
Python中方法的工作方式 方法是存储在类属性中的函数,你可以用下面这种方式声明和访问一个函数 >>> class Pizza(object): ... def __init__(self, size): ... self.size = size ... def get_size(self): ... return self.size ... >>> Pizza.get_size <unboun
py3study
2020/01/19
7200
“终于懂了“系列:Jetpack AAC完整解析(二)LiveData 完全掌握!
也就是说,LiveData使得 数据的更新 能以观察者模式 被observer感知,且此感知只发生在 LifecycleOwner的活跃生命周期状态。
胡飞洋
2020/12/15
4K0
ViewModel 和 LiveData:为设计模式打 Call 还是唱反调?
原文地址:ViewModels and LiveData: Patterns + AntiPatterns 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.
Android 开发者
2018/05/31
3.1K0
两步使用 LiveData 替换 Observable Field
可观察性指的是一个对象会在其数据发生变更时向其他类发出通知。可观察性是数据绑定库 (Data Binding) 的重要特性之一,它可以将数据和 UI 元素绑定在一起——当数据发生变化时,屏幕上的相关元素也会随之更新。
Android 开发者
2020/04/22
1.1K0
LiveData三问—阿里真题
主要思想就是用到了观察者模式思想,让观察者和被观察者解耦,同时还能感知到数据的变化,所以一般被用到ViewModel中,ViewModel负责触发数据的更新,更新会通知到LiveData,然后LiveData再通知活跃状态的观察者。
码上积木
2020/11/09
5010
细说Jetpack中那些LiveData们
这个类的位置在 lifecycle-viewmodel-savedstate的SavedStateHandle类中,也是继承自MutableLiveData,其与MutableLiveData最大的不同是多了两个属性。
没关系再继续努力
2021/12/17
6530
是时候更新手里的武器了—Jetpack架构组件简析
最近两年,MVVM的呼声越来越高,说实话,在经历了MVP的臃肿,MVP的繁琐,我有点怕了。但是这次Google官方带来的一系列为MVVM架构设计的武器—Jetpack,真的让我惊喜到了。
码上积木
2020/09/27
2.9K0
【译】LiveData-Flow在MVVM中的最佳实践
原文链接:https://proandroiddev.com/using-livedata-flow-in-mvvm-part-i-a98fe06077a0
用户1907613
2021/10/19
2.8K0
【译】LiveData-Flow在MVVM中的最佳实践
Jetpack组件之LiveData
ViewModel 以注重生命周期的方式存储和管理界面相关的数据,当数据发生变化时,可通过接口的方式通知页面,但是有很多数据要通知时,需要定义大量的接口显得十分冗余,为此,Jetpack提供了LiveData组件解决这种问题,简化了开发过程。 LiveData 是一种可观察的数据存储器类。它是一个数据的容器,将数据包装起来,使数据成为被观察者,当数据发生变化时,观察者能够获得通知。 LiveData 具有生命周期感知能力,它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。
八归少年
2022/06/29
8440
Vue中如何使用方法、计算属性或观察者
熟悉 Vue 的都知道 方法methods、计算属性computed、观察者watcher 在 Vue 中有着非常重要的作用,有些时候我们实现一个功能的时候可以使用它们中任何一个都是可以的,但是它们之间又存在一些不同之处,每一个都有一些适合自己的场景,我们要想知道合适的场景,肯定先对它们有一个清楚的了解,先看一个小例子。
六小登登
2018/11/15
1.3K0
开发以太坊安卓钱包系列3 - 资产信息展示
这是如何开发以太坊(安卓)钱包系列第3篇, 钱包账号资产信息展示,展示信息主要包括账号地址、eth余额及该账号所拥有的Token及余额。
Tiny熊
2019/04/28
1.3K0
开发以太坊安卓钱包系列3 - 资产信息展示
【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )
在 视图 View 与 数据模型 Model 通过 ViewModel 架构组件 进行绑定后 , 可以立即 将 ViewModel 中的数据设置到 UI 界面中 ,
韩曙亮
2023/03/30
1.3K0
【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 )
如何在gin中获取响应体内容?
实现思路: 对gin的responseWriter进行包装, 每次写往请求方写响应数据的时候,将响应数据返回出去。step1: 定义一个新的CustomResponseWriter,通过组合方式持有一个gin.ResponseWriter和response body缓存。type CustomResponseWriter struct { gin.ResponseWriter body *bytes.Buffer}func (w CustomResponseWriter) Write(b []byt
Johns
2021/04/10
11.6K0
如何在gin中获取响应体内容?
Jetpack:LiveData
LiveData是一个可被观察的数据持有者类。与常规的Observable不同,LiveData能意识到应用程序组件的生命周期变化,这意味着它能遵守Activity、Fragment、Service等组件的生命周期
提莫队长
2020/06/03
6100
点击加载更多

相似问题

观察未触发LiveData的房间DAO

131

房间android LiveData观察通话仅2次

117

从房间观察LiveData中的ViewModel触发器UninitializedPropertyAccessException

12

房间数据库查询后LiveData不更新观察者

11

在房间数据库中的runInTransaction()期间触发LiveData观察者

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文