android studio 30天学习笔记-day 10-rxjava2+retrofit

前言

retrofit负责请求网路资料请求,rxjava负责异步执行、thread之间的切换,今天实作基本的rxjava2+retrofit使用方法

首先跟之前android studio 30天学习笔记-介绍retrofit(一)一样

首先:

1.创造一个资料类别的class
2.使用@get方法获取资料
public interface NextPart {
    @GET("todos")
    Observable<List<RetrofitSetting>> getCall(); //将原本的call改成Observable
    }
3.创建retrofit
public class MainActivity extends AppCompatActivity {
    private static final String TAG="Rxjava";
    private TextView tv1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv1=findViewById(R.id.tv1);//显示的字

        
Retrofit retrofit = new retrofit2.Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create()) //Gson解析
                .baseUrl("https://jsonplaceholder.typicode.com")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())//支援RxJava2
                .build();

        NextPart nextPart= retrofit.create(NextPart.class);

        Observable<List<RetrofitSetting>> observable=nextPart.getCall();
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<List<RetrofitSetting>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        Log.d(TAG,"connect");
                    }

                    @Override
                    public void onNext(List<RetrofitSetting> retrofitSettings) {
                      for (RetrofitSetting retrofitSetting : retrofitSettings) { //retrofitSetting获得retrofitSettings取回的资料
                            String content = " ";
                            content += "userId:" + retrofitSetting.getUserId() + "\n";
                            content += "id:" + retrofitSetting.getId() + "\n";
                            content += "title:" + retrofitSetting.getTitle() + "\n";
                            content += "completed:"+retrofitSetting.getCompleted() +"\n\n";
                            tv1.append(content);
                        } 
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.d(TAG, "fail");

                    }

                    @Override
                    public void onComplete() {
                        Log.d(TAG,"successful");

                    }
                });

subscribeOn:设定执行的内容要在哪一个thread执行
observeOn:设定处理回传的内容在哪一个thread执行

各个thread:

Schedulers.io():IO操作的执行绪,常用於网路连线
Schedulers.computation():CPU计算密集的执行绪,用於处理复杂需要CPU计算的资料
Schedulers.newThread():创建新的Thread,一般不常用到
AndroidSchedulers.mainThread():Android主执行绪,用来更新UI


这样就可以取到值了


<<:  Data layer testing (1)

>>:  Day 10 Eventrouter + ELK + Filebeat 来收集k8s丛集的events

【在厨房想30天的演算法】Day 19 演算法 : 图形搜寻 graph search 广度搜寻、深度搜寻

Aloha!又是我少女人妻 Uerica!今天真是个秋高气爽的日子,下午想说跟老公去公园浪漫野餐,还...

启动

当我在犹豫这季是否参赛时,起了不少的犹豫。主要是今年并没有酝酿出一个真正打从内心想要发展的特定主题,...

学习如何以输入增加知识

如何有效输入从听 Podcast、有声书,到文章集结成册的出版书籍。我们的世界有多元化的方式供大家选...

用我的 iMac 把 Clear Linux 安装到 USB 外接硬碟上

一般而言,要安装 Linux,又要保留原本的系统,就得再先了解一下硬碟分割,通常都会以 GRUB ...