我读了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反射相当慢。但你想用什么取决于你自己。