
Retrofit+RxJava 的结合使用
发布日期:2022-02-26 14:49:31
浏览次数:22
分类:技术文章
本文共 4328 字,大约阅读时间需要 14 分钟。
这里只是简单的说一下 他们的用法 具体的原理不做解释因为我也不会
1.首先导入retrofit的依赖
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
最新版本地址:
2.rxjava
第二个依赖 retrofit 对 rxjava2的适配的一个依赖 这样就可已使用rxjava2 了 而不是直接去rxjava的官网上找依赖 那样运行的时候会报错的
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.2.4'
最新版本地址:
前面是retrofit 对 rxjava2的适配 后面是rxjava的最新版本
3.之后在项目中创建一个接口 ~不要想这是干甚么用的到后面 你大概就知道了 应该
package com.bwie.test1126002.net;import java.util.Map;import io.reactivex.Observable;import okhttp3.ResponseBody;import retrofit2.http.GET;import retrofit2.http.POST;import retrofit2.http.QueryMap;import retrofit2.http.Url;public interface BaseService { @GET Observableget(@Url String url, @QueryMap Map map); @POST Observable post(@Url String url, @QueryMap Map map);}
4.
package com.bwie.text1126.net;import io.reactivex.Observer;import io.reactivex.disposables.Disposable;public abstract class BaseObserverimplements Observer { @Override public void onSubscribe(Disposable d) { } @Override public abstract void onNext(T t); @Override public abstract void onError(Throwable e); @Override public void onComplete() { }}
5.
implementation 'com.squareup.retrofit2:converter-gson:2.4.0' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
最新版本地址:
6.
package com.bwie.test1126002.net;import java.util.HashMap;import java.util.Map;import io.reactivex.Observer;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.schedulers.Schedulers;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class HttpHelper { private static HttpHelper ourInstance; private Retrofit retrofit; private HttpHelper() { } public static HttpHelper getInstance() { if(ourInstance==null){ synchronized (HttpHelper.class){ ourInstance=new HttpHelper(); } } return ourInstance; } public void init(String baseUrl){ retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); } public void doGet(String url, Mapmap, Observer observer){ if(map==null){ map=new HashMap<>(); } retrofit.create(BaseService.class) .get(url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); } public void doPost(String url, Map map, Observer observer){ if(map==null){ map=new HashMap<>(); } retrofit.create(BaseService.class) .post(url,map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(observer); }}
7.
package com.bwie.test1126002.app;import android.app.Application;import com.bwie.test1126002.net.HttpHelper;public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); HttpHelper.getInstance().init("http://www.zhaoapi.cn/"); }}
记得在清单文件里注册
8.
package com.bwie.test1126002;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import com.bwie.test1126002.net.BaseObserver;import com.bwie.test1126002.net.HttpHelper;import java.io.IOException;import okhttp3.ResponseBody;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); HttpHelper.getInstance().doGet("/ad/getAd", null, new BaseObserver() { @Override public void onNext(ResponseBody value) { try { Log.i("main", "onNext: " + value.string()); } catch (IOException e) { e.printStackTrace(); } } @Override public void onError(Throwable e) { Log.i("main", "onError: " + e.getMessage()); } }); }}
记得加网络权限
转载地址:https://blog.csdn.net/qq_31353347/article/details/84554601 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2023年05月15日 21时04分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
最新文章
Android文件管理器与media数据库的同步问题
2019-05-16 12:29:42
java 可重启线程及线程池类的设计
2019-05-16 12:29:42
ExecutorService对象的shutdown()和shutdownNow()的区别
2019-05-16 12:29:41
Android 建议SQLite操作使用rawQuery方法
2019-05-16 12:29:41
上传或下载当文件名包含有特殊字符"#"的处理
2019-05-16 12:29:40
Android 向多媒体数据库增加音频文件
2019-05-16 12:29:40
Android MediaStore扫描 & 向MediaStore中插入文件记录
2019-05-16 12:29:39
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描指定文件
2019-05-16 12:29:38
Android游戏中添加音频-详解MediaPlayer与SoundPoo!并讲解两者的区别和游戏中的用途!
2019-05-16 12:29:38
Android使用代码动态创建Selector(网络图片)
2019-05-16 12:29:37
Dialog常见问题
2019-05-16 12:29:37
TextView图文混排图片被截断的问题以及Android省略号只有一个点的问题
2019-05-16 12:29:36
Android SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
2019-05-16 12:29:36
Android 休眠状态对Camera预览的影响
2019-05-16 12:29:35
android自定义相机黑屏问题
2019-05-16 12:29:34
Android adapter局部更新
2019-05-16 12:29:34
Android 实时视频采集—Cameara预览采集
2019-05-16 12:29:33
Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView)
2019-05-16 12:29:32
android.view.SurfaceHolder$BadSurfaceTypeException: Surface type is SURFACE_
2019-05-16 12:29:32
error: insufficient permissions for device的解决
2019-05-16 12:29:31