什么是观察者模式
拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。
对于观察者模式而言,肯定有观察者和被观察者之分。
观察者模式(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() {
}
});
}
}