第四单元Rxjava和Rxandroid及Retrofit的使用

什么是观察者模式

拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。

对于观察者模式而言,肯定有观察者和被观察者之分。

观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新

Rxjava的入门介绍

https://www.jianshu.com/p/a406b94f3188

Rxjava 的详细使用

https://www.jianshu.com/p/cd984dd5aae8

1,创建操作符 Rxjava just和fromArray及延时或间隔创建的使用

Android RxJava:最基础的操作符详解 - 创建操作符

https://www.jianshu.com/p/e19f8ed863b1

2,变换操作符操作符的使用

作用
对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列
https://www.jianshu.com/p/904c14d253ba

3,组合 / 合并操作符

https://www.jianshu.com/p/c2a7c03da16d

4, 功能性操作符

辅助被观察者(Observable) 在发送事件时实现一些功能性需求

Retrofit的入门介绍

https://www.jianshu.com/p/a3e162261ab6

Retrofit的注解介绍

https://www.jianshu.com/p/7687365aa946

Retrofit的源码解读

https://www.jianshu.com/p/0c055ad46b6c

Rxjava和Retrofit的结合使用

package com.fenghongzhang.rxjava_retrofit;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.Scheduler;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
    
    

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Retrofit.Builder builder = new Retrofit.Builder();
        builder.addConverterFactory(GsonConverterFactory.create());
        builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create());
        builder.baseUrl("http://www.qubaobei.com/");
        Retrofit retrofit = builder.build();

        FoodInterface foodInterface = retrofit.create(FoodInterface.class);

        Observable<Food> food = foodInterface.getFood();

        food.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<Food>() {
    
    
                @Override
                public void onSubscribe(Disposable d) {
    
    
                    Log.i(TAG, "onSubscribe: ");
                }

                @Override
                public void onNext(Food food) {
    
    
                    Log.i(TAG, "onNext: "+food.toString());
                    Toast.makeText(MainActivity.this, food.toString(), Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onError(Throwable e) {
    
    

                }

                @Override
                public void onComplete() {
    
    

                }
            });


    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/shuai_ge_feng/article/details/113754324