Android 从数据快照中获取价值的更好方法?
在Android Studio中,使用Firebase实时数据库和Kotlin检索节点的值,您将获得以下代码:Android 从数据快照中获取价值的更好方法?,android,kotlin,firebase-realtime-database,operator-overloading,inline,Android,Kotlin,Firebase Realtime Database,Operator Overloading,Inline,在Android Studio中,使用Firebase实时数据库和Kotlin检索节点的值,您将获得以下代码: val parentNodePath: String = "nodeParentPath" val nodePath: String = "nodePath" val nodeRef = FirebaseDatabase.getInstance().reference.child(parentNodePath) var value: Int nodeRef.addListener
val parentNodePath: String = "nodeParentPath"
val nodePath: String = "nodePath"
val nodeRef = FirebaseDatabase.getInstance().reference.child(parentNodePath)
var value: Int
nodeRef.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(dS: DataSnapshot) {
value = dS.child(nodePath).getValue(Int::Class.java)!!
//or also
//value = dS.child(nodePath).value as Int
}
override fun onCancelled(dE: DatabaseError) {}
})
是否可以定义一个扩展函数来实现get
操作符重载来检索路径中的值,并且最好也使用inline
关键字,这样当它运行时,就不必调用函数,而是在代码中内联
/*inline*/ operator fun DataSnapshot.get(path: String): Any? =
this.child(path).value
它将被用作Int的
value=dS[nodePath]
你所说的“OK”是什么意思?这是你想要的方式吗?您是否预期会有异议?如果是,是什么?我的意思是,会有任何性能问题吗?我实现了它,它工作得很好,我不知道它是否会在更大范围内引起任何问题如果你想知道是否有性能问题,你应该对它进行基准测试。但老实说,我认为在你真正观察到性能问题之前,这一点根本不值得担心。你所说的“OK”是什么意思?这是你想要的方式吗?您是否预期会有异议?如果是,是什么?我的意思是,会有任何性能问题吗?我实现了它,它工作得很好,我不知道它是否会在更大范围内引起任何问题如果你想知道是否有性能问题,你应该对它进行基准测试。但老实说,我认为在您实际观察到性能问题之前,这一点根本不值得担心。