Невозможно использовать Autodispose в Android с Kotlin - PullRequest
0 голосов
/ 12 января 2019

Я пытался использовать AutoDispose https://github.com/uber/AutoDispose, чтобы избавиться от моих потоков Rx в Android.

Но у меня возникает проблема, когда я добавляю ее в свою деятельность / фрагмент. Я думаю, что это проблема kotlin, но я не могу понять, что.

при добавлении AndroidLifecycleScopeProvider.from(lifecycle) я получаю сообщение об ошибке в методе from в Android Studio, и он не компилируется.

Это трассировка стека

None of the following functions can be called with the arguments supplied: 
public final fun from(p0: (() -> Lifecycle)!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: Lifecycle!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider
public open fun from(p0: LifecycleOwner!): AndroidLifecycleScopeProvider! defined in com.uber.autodispose.android.lifecycle.AndroidLifecycleScopeProvider

Тот же код работает с примером приложения.

1 Ответ

0 голосов
/ 30 марта 2019

У меня возникла та же проблема, это связано с совместимостью поддержки пакета Androidx и предыдущих версий v7 пакета Lifecycle, они отличаются в артефакте пакета именование.

AndroidX
Mirgration
Например: наименование артефакта:

com.android.support: appcompat-v7 -> androidx.appcompat: appcompat: 1.0.0

AppCompatActivity реализовал LifecycleOwner, который является мощью в работе AutoDispose, но в последней версии AutoDispose вместо этого они используют AndroidX (см. AndroidLifecycleScopeProvider.from (владелец LifecycleOwner) «LifecycleOwner»), поэтому владелец не может рассматриваться как правильный тип, если вы используете Non-Androidx с AutoDispose v1.1.0 (AFAIK AutoDispose v0.8.0 хорошо работает с com.android.support:appcompat-v7:28.0.0 запущенной1015*

Итак, вы можете использовать приложение Migrate to AndroidX Руководство по интеграции или использовать старую версию AutoDispose. См. Авторазмещение на mvnrepository .

Об изменениях см. Список изменений https://github.com/uber/AutoDispose/blob/master/CHANGELOG.md#version-100, v1.0.0 и более поздние версии зависят от AndroidX, v1.0.0-RC3 должен быть нашим выбором.

Версия 1.0.0 2018-10-10 Стабильный выпуск! По функциональности он идентичен 1.0.0-RC3, но полностью перенесен на новые артефакты AndroidX. С этого момента для проектов Android вы должны быть на артефактах AndroidX. Вы можете использовать 1.0.0-RC3 для облегчения миграции, если это необходимо.

Редактировать : Если вы хотите RxKotlin как расширение, перейдите и скопируйте: https://github.com/uber/AutoDispose/blob/master/sample/src/main/kotlin/com/uber/autodispose/recipes/subscriberproxies.kt

...