为什么dataSnapshot在ViewModel中反序列化,而不是在扩展LiveData的类中反序列化



我读了Doug Stevenson写的这些博客文章,第1部分,第2部分,第3部分。在第二部分,他说

实时数据库SDK使将DataSnapshot转换为JavaBean风格的对象变得非常容易

并提到我们可以使用这行代码将DataSnapshot反序列化为HotStock对象(JavaBean类(

HotStockstock=dataSnapshot.getValue(HotStock.class(

我很困惑,因为他首先使用Transformation.map,然后他说如果LiveData转换很昂贵,我们可以从ViewModel创建MediatorLiveData对象,将DataSnapshot转换为HotStock对象。

我的问题是:为什么我们不能直接打电话给

HotStockstock=dataSnapshot.getValue(HotStock.class(

来自ValueEventListener上的onDataChange((方法,该方法位于扩展LiveData超类的类中,然后简单地使用setValue((方法将HotStock对象直接传递到ViewModel,然后传递到活动或片段,观察LiveData的更改?

可以这样做,but getValue()传递类对象实际上有点慢(尤其是第一次,对于特定的类(,因为SDK必须使用反射来找出如何将所有字段映射到它创建的对象中。众所周知,Java反射相当慢。但你想用什么取决于你自己。

相关内容

  • 没有找到相关文章

最新更新