Я могу делать это там, где это активно. Но я не понимаю, как использовать модель просмотра, где она находится в 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)
}
}
}