改造とRxJavaの組み合わせ

パブリック クラス MainActivityは延びAppCompatActivity { 
    @SuppressLint( "CheckResult" 保護された ボイドのonCreate(バンドルsavedInstanceStateを){
         スーパー.onCreate(savedInstanceState)を、
        setContentView(R.layout.activity_main)。
        ApiClient.retrofit()を作成(ApiStores。クラス).loadDataByRetrofitRxJava( "101220602" 
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(新たなオブザーバー<MainModel> (){ 
                    @Override 
                    パブリック 無効onSubscribe(使い捨てD){ 
                        (Log.wを "输出:"、 "连接" )。
                    } 

                    @Override 
                    公共 ボイドonNext(MainModel mainModel){ 
                        Log.w( "输出:"、 "" + 。mainModel.getWeatherinfo()getCity())。
                        Log.d( "输出:"、 "観察者スレッドがある:" + 。にThread.currentThread()のgetName())。
                    } 

                    @Override 
                    公共 ボイドのonError(ThrowableをE){ 
                        Toast.makeText(MainActivity。この、 "登录失败" 

                    } 

                    @Override 
                    公共 ボイドonCompleteの(){ 
                        Toast.makeText(MainActivity。この、 "登录成功" 、Toast.LENGTH_SHORT).SHOW(); 

                    } 
                })。
    } 

    パブリック インターフェイスApiStores {
         // baseUrlに 
        文字列API_SERVER_URL = "http://www.weather.com.cn/" 

        // 加载天气 
        @GET( "ADAT / SK / {cityId}の.html" 
        観測 <MainModel> loadDataByRetrofitRxJava(@Path( "cityId" 文字列cityId)。
    } 

}

Mainメソッド

パブリック クラスApiClient {
     パブリック 静的補強mRetrofit。

    パブリック 静的レトロフィットレトロフィット(){
         場合(mRetrofit == NULL ){ 
            OkHttpClient.Builderビルダー = 新しいOkHttpClient.Builder()。
            builder.readTimeout( 5 、TimeUnit.SECONDS)。
            builder.connectTimeout( 5 、TimeUnit.SECONDS)。

            もし(BuildConfig.DEBUG){
                 // ログイン信息拦截器 
                HttpLoggingInterceptor loggingInterceptor = 新しいです HttpLoggingInterceptor()。
                loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY)。
                // 设置デバッグログ模式
                builder.addInterceptor(loggingInterceptor)。
            } 
            OkHttpClient okHttpClient = builder.build()。
            mRetrofit = 新しいRetrofit.Builder()
                    .baseUrl(MainActivity.ApiStores.API_SERVER_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .client(okHttpClient)
                    .build(); 
        } 
        リターン mRetrofit。
    }

}

新しいクラス

パブリック クラスMainModel { 
    

    パブリック 静的WeatherinfoBean getWeatherinfo(){
         戻り  新しい)(WeatherinfoBeanします。
    } 
    
    パブリック 静的 クラスWeatherinfoBean {
         プライベート文字列の都市; 

        パブリック文字列getCity(){
             戻り都市; 
        } 

        公共 ボイドsetCity(文字列市){
             この .city = 都市。
        } 

    } 
}

 

  実装'io.reactivex.rxjava2:rxjava:2.2.9' 
        実装 'io.reactivex.rxjava2:rxandroid:2.1.1'
     // 改造 
    実装'com.squareup.retrofit2:改造:2.6.0' // Gsonコンバータ 
    の実装'com.squareup.retrofit2:コンバータ-gson:2.6.0' // rxJava2アダプタの 
    実装"com.squareup.retrofit2:アダプター-rxjava2:2.3.0" // okhttp 
    実装「com.squareup.okhttp3:okhttp:3.12。 0' 
    実装 'com.squareup.okhttp3:ログ・インターセプター:3.9.1'
    
    
    

直接依存同期とbuild.grideにコピー

おすすめ

転載: www.cnblogs.com/Ocean123123/p/11018818.html