проблема при использовании AndroidSchedulers.MainThread()

#android #retrofit #rx-java #rx-java2 #rx-android

#Android #модернизация #rx-java #rx-java2 #rx-android

Вопрос:

После внесения некоторых обновлений gradle Android начал выдавать мне ошибки, связанные с номером версии, поэтому в процессе их исправления я столкнулся с проблемами, связанными с RxJava, я использую retrofit в своем проекте.

ошибка, которую я получаю, заключается в следующем.

 observeOn(io.reactivex.Schedulers) in Observable cannot be applied to (rx.Scheduler)
  

код
ManEmpAct.java

     import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import com.dopay.onboarding.Constants;
import com.dopay.onboarding.DoPayApplication;
import com.dopay.onboarding.R;
import com.dopay.onboarding.data.AppPreferences;
import com.dopay.onboarding.enums.StartStopAppMonitor;
import com.dopay.onboarding.fragment.CreateEmployeeDetailsFragment;
import com.dopay.onboarding.fragment.EmployeeEditFragment;
import com.dopay.onboarding.modules.UserAccountManagementView;
import com.dopay.onboarding.refactor_fragments.CountryByPhoneNumberFragment;
import com.dopay.onboarding.refactor_fragments.TakePhotoFragment;
import com.dopay.onboarding.refactor_fragments.TakePhotoFragmentCamera2;
import com.dopay.onboarding.refactor_fragments.ViewImageFragment;
import com.dopay.onboarding.util.DialogUtil;
import com.dopay.onboarding.util.EventsTracker;
import com.dopay.onboarding.util.UIUtil;

//import rx.android.schedulers.AndroidSchedulers;

import io.reactivex.android.schedulers.AndroidSchedulers;
compositeSubscription.add(publishRelay.asObservable().observeOn(AndroidSchedulers.mainThread()).subscribe(iView -> {

}
  

полный список зависимостей, используемых в приложении, на всякий случай, если я не подбираю правильный
build.gradle

     compileSdkVersion 28
     minSdkVersion 21
     targetSdkVersion 26

    dependencies {

    //DEPENDENCIES RELATED TO RETROFIT, RXJAVA, RXANDROID
    implementation 'com.jenzz.appstate:adapter-rxjava2:3.0.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.0.0'
    implementation 'com.laimiux.rxnetwork:rxnetwork:0.0.4'
    //Retrofit, RxJava and OkHttp,Gson,Dagger,ButterKnife.
    implementation 'com.squareup.retrofit2:retrofit:2.1.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'
    implementation group: 'com.squareup.retrofit2', name: 'adapter-rxjava2', version: '2.2.0'
    implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'
    implementation 'com.jakewharton.rxrelay:rxrelay:1.1.0'
    implementation group: 'io.reactivex.rxjava2', name: 'rxandroid', version: '2.0.1'
    implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0'
    implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
    implementation 'com.squareup.retrofit2:retrofit-mock:2.1.0'
    testImplementation 'com.squareup.retrofit2:retrofit:2.1.0'
    testImplementation 'com.squareup.retrofit2:converter-gson:2.1.0'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')

    implementation 'com.android.support:multidex:1.0.2'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v13:28.0.0'
    implementation 'com.jenzz.appstate:appstate:3.0.1'

    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation group: 'joda-time', name: 'joda-time', version: '2.3'
    implementation 'com.mikhaellopez:circularprogressbar:1.1.1'
    implementation 'io.realm:android-adapters:2.0.0'    
    implementation 'com.github.arimorty:floatingsearchview:2.1.1'
    implementation 'uk.co.chrisjenx:calligraphy:2.3.0'    
    implementation 'com.google.firebase:firebase-messaging:15.0.0'
    debugImplementation 'com.21buttons:fragment-test-rule:1.0.0'    
    implementation 'frankiesardo:icepick:3.1.0'
    annotationProcessor 'frankiesardo:icepick-processor:3.1.0'
    implementation 'io.michaelrocks:libphonenumber-android:8.9.0'
    implementation ('com.google.dagger:dagger:2.0.2'){
        exclude group: 'com.google.guava'
    }
    annotationProcessor ('com.google.dagger:dagger-compiler:2.0.2'){
        exclude group: 'com.google.guava'
    }
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    compileOnly 'javax.annotation:jsr250-api:1.0'
    implementation 'com.android.support:support-annotations:24.2.0'    
    implementation 'com.futuremind.recyclerfastscroll:fastscroll:0.2.5'    
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
    implementation 'com.jakewharton.timber:timber:4.5.1'
    implementation 'com.google.code.gson:gson:2.5'    
    implementation 'com.github.bumptech.glide:glide:3.7.0'
    implementation 'com.github.fafaldo:fab-toolbar:1.2.0'
    implementation 'com.instabug.library:instabug:8.1.1'
    implementation 'com.wdullaer:materialdatetimepicker:3.5.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'net.hockeyapp.android:HockeySDK:4.1.5'    
    implementation group: 'com.joooonho', name: 'selectableroundedimageview', version: '1.0.1'
    implementation 'com.mixpanel.android:mixpanel-android:5. '
    debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5'
    //releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:1.9.5'
    testImplementation 'com.google.dexmaker:dexmaker:1.1'
    testImplementation 'org.powermock:powermock-api-mockito:1.6.4'
    testImplementation 'org.powermock:powermock-module-junit4:1.6.4'
    testImplementation 'org.powermock:powermock-core:1.6.4'
    testImplementation 'org.powermock:powermock-module-junit4-rule:1.5.4'
    testImplementation 'org.powermock:powermock-classloading-base:1.6.4'
    testImplementation 'org.powermock:powermock-classloading-xstream:1.5.4'
    testImplementation 'org.powermock:powermock-module-testng:1.6.4'

}
  

версия gradle

 classpath 'com.android.tools.build:gradle:3.0.1'
  

Не удалось выяснить, в чем проблема, не могли бы вы, пожалуйста, поделиться некоторой информацией о том, что я, возможно, делаю неправильно

Спасибо R

Комментарии:

1. опубликуйте все свои инструкции по импорту

2. Каков тип publishRelay ?

3. @SantanuSur Я обновил свой импорт, используемый в этом файле java

4. BehaviorRelay publishRelay = BehaviorRelay.create(«по умолчанию»);

5. пожалуйста, проверьте, возвращается ли наблюдаемое с помощью publishRelay

Ответ №1:

Вы смешиваете планировщики rxjava 2 с rxjava 1. Вероятно, rxrelay использует rxjava one, и вы можете случайно импортировать планировщики оттуда — я не подтвердил это, но если это так, вы могли бы просто перейти на более свежую версию rxrelay. Проверьте readme для получения более подробной информации. Также имейте в виду, что это может быть любая другая библиотека, а не конкретно rxrelay.

В любом случае, как вы можете видеть из полного пути в ошибке, в нем указано, что rx.Scheduler (планировщик rxjava1) не может использоваться в качестве параметра метода, который ожидает io.reactivex.Schedulers (планировщик rxjava2)

Я бы настоятельно посоветовал обновить все библиотеки до rxjava2, чтобы вы больше не обнаружили эту проблему.