как использовать viewmodel в daggerapplication? - PullRequest
0 голосов
/ 16 июня 2020

Я могу делать это там, где это активно. Но я не понимаю, как использовать модель просмотра, где она находится в daggerapplication. При объявлении модели просмотра с использованием by viewModels я не могу использовать by viewModels Есть ли способ решить эту проблему? пожалуйста, помогите мне. GlobalApplication

open class GlobalApplication : DaggerApplication() {
    private var activityReferences = 0
    private var isActivityChangingConfigurations = false

    @Inject
    lateinit var viewModelFactory: ViewModelProvider.Factory
    private val viewModel by viewModels<SplashViewModel> { viewModelFactory }

    override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
        return DaggerApplicationComponent.factory().create(applicationContext)
    }


    val listener = object :ActivityLifecycleCallbacks {
        override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
        }

        override fun onActivityStarted(activity: Activity?) {
            if (++activityReferences == 1 && !isActivityChangingConfigurations) {

            }
        }

        override fun onActivityResumed(activity: Activity?) {}
        override fun onActivityPaused(activity: Activity?) {}
        override fun onActivityStopped(activity: Activity?) {
            isActivityChangingConfigurations = activity!!.isChangingConfigurations
            if (--activityReferences == 0 && !isActivityChangingConfigurations) {
                showToast(globalApplicationContext,"entered to background")
            }
        }
        override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {}
        override fun onActivityDestroyed(activity: Activity?) {}
    }

    override fun onCreate() {
        super.onCreate()
        instance = this
        registerActivityLifecycleCallbacks(listener)
    }

    companion object {
        private var instance: GlobalApplication? = null

        val globalApplicationContext: GlobalApplication
            get() {
                checkNotNull(instance) {}
                return instance!!
            }
    }

}

SplashViewmodel

class SplashViewModel @Inject constructor(private val apiRepository: ApiRepository) : ViewModel() {

    private val _isLogin = MutableLiveData<LoginResultData>()
    val isLogin: LiveData<LoginResultData> = _isLogin

    fun login(mobile:String){
        viewModelScope.launch(networkExceptionHandler) {
            var login = apiRepository.login(mobile)
            _isLogin.value = login
            showLog("login : "+login)
        }
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...