阅读ViewModel概述,我想知道ViewModel
同时可以成为ok LifecycleObserver
吗?我这样做的目的是在用户不与UI交互时断开Firebase侦听器的连接,并在用户与UI进行交互时再次重新连接。据我所知,它运行完美。但是,这样做恐怕很不好(任何内存泄漏)。如果是这样,还有其他替代方法吗?
class UserProfileViewModel : ViewModel(), LifecycleObserver {
companion object {
private const val TAG = "ProfileViewModel"
}
private lateinit var mUserProfile: MutableLiveData<DocumentSnapshot>
private var mRegistration: ListenerRegistration? = null
override fun onCleared() {
Log.d(TAG, "onCleared")
disconnectListener()
}
fun getUserProfile(): LiveData<DocumentSnapshot> {
if (!::mUserProfile.isInitialized) {
mUserProfile = MutableLiveData()
}
return mUserProfile
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun connectListener() {
Log.d(TAG, "connectListener")
val user = FirebaseAuth.getInstance().currentUser
if (user == null) {
Log.w(TAG, "User not signed in.")
return
}
val firestore …
Run Code Online (Sandbox Code Playgroud)