retrofit负责请求网路资料请求,rxjava负责异步执行、thread之间的切换,今天实作基本的rxjava2+retrofit使用方法
首先跟之前android studio 30天学习笔记-介绍retrofit(一)一样
public interface NextPart {
@GET("todos")
Observable<List<RetrofitSetting>> getCall(); //将原本的call改成Observable
}
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执行
Schedulers.io()
:IO操作的执行绪,常用於网路连线
Schedulers.computation()
:CPU计算密集的执行绪,用於处理复杂需要CPU计算的资料
Schedulers.newThread()
:创建新的Thread,一般不常用到
AndroidSchedulers.mainThread()
:Android主执行绪,用来更新UI
这样就可以取到值了
>>: Day 10 Eventrouter + ELK + Filebeat 来收集k8s丛集的events
Aloha!又是我少女人妻 Uerica!今天真是个秋高气爽的日子,下午想说跟老公去公园浪漫野餐,还...
当我在犹豫这季是否参赛时,起了不少的犹豫。主要是今年并没有酝酿出一个真正打从内心想要发展的特定主题,...
如何有效输入从听 Podcast、有声书,到文章集结成册的出版书籍。我们的世界有多元化的方式供大家选...
一般而言,要安装 Linux,又要保留原本的系统,就得再先了解一下硬碟分割,通常都会以 GRUB ...