Следующий код взят из проекта play-billing-samples .
private val repository
равно val
, почему repository = BillingRepository.getInstance(application)
может работать хорошо?
На мой взгляд, val необходимо инициализировать при определении, например private val repository: BillingRepository by lazy {BillingRepository.getInstance(application)}
.
Код
class BillingViewModel(application: Application) : AndroidViewModel(application) {
val gasTankLiveData: LiveData<GasTank>
val premiumCarLiveData: LiveData<PremiumCar>
val goldStatusLiveData: LiveData<GoldStatus>
val subsSkuDetailsListLiveData: LiveData<List<AugmentedSkuDetails>>
val inappSkuDetailsListLiveData: LiveData<List<AugmentedSkuDetails>>
private val LOG_TAG = "BillingViewModel"
private val viewModelScope = CoroutineScope(Job() + Dispatchers.Main)
private val repository: BillingRepository
init {
repository = BillingRepository.getInstance(application)
repository.startDataSourceConnections()
gasTankLiveData = repository.gasTankLiveData
premiumCarLiveData = repository.premiumCarLiveData
goldStatusLiveData = repository.goldStatusLiveData
subsSkuDetailsListLiveData = repository.subsSkuDetailsListLiveData
inappSkuDetailsListLiveData = repository.inappSkuDetailsListLiveData
}
...
}