小编Cha*_*Wei的帖子

ViewModel类可以实现LifecycleObserver吗?

阅读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)

android android-jetpack

5
推荐指数
1
解决办法
144
查看次数

标签 统计

android ×1

android-jetpack ×1