BillingClient и BillingClientWrapper — циклическое внедрение зависимостейAndroid

Форум для тех, кто программирует под Android
Гость
BillingClient и BillingClientWrapper — циклическое внедрение зависимостей

Сообщение Гость »


У меня есть ситуация, когда моему BillingDataSource, также известному как BillingClientWrapper, нужен одноэлементный объект BillingClient, но создается BillingClient объект не может быть завершен без прослушивателя, который находится в BillingDataSource:

class BillingDataSource(частный клиент val: BillingClient) { Private val _purchases = MutableStateFlow(mutableListOf()) вал покупок = _purchases.asStateFlow() val PURCHASES_UPDATED_LISTENER = PurchasesUpdatedListener { результат, покупки -> _purchases.value = покупки } } И внедрение зависимостей:

@Provides @Синглтон весело предоставитьBillingClient( Контекст @ApplicationContext: Контекст, оболочка: BillingDataSource ) : БиллингКлиент { вернуть BillingClient.newBuilder(контекст) .setListener(обертка.PURCHASES_UPDATED_LISTENER) .enablePendingPurchases() .строить() } @Обеспечивает @Синглтон весело предоставитьBillingDataSource( клиент: БиллингКлиент ) : BillingDataSource = BillingDataSource(клиент) Требование .setListener при создании BillingClient оказывается настоящей головной болью. Конечно, я могу разорвать циклическую зависимость, поместив прослушиватель за пределы BillingDataSource, но тогда я потеряю доступ к членам (например, _purchases) внутри BillingDataSource, и это вряд ли идеально.

Как мне решить эту проблему?

Вернуться в «Android»