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    Observable
get(@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 BaseObserver
implements 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, Map
map, 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:GreenDao的简单使用
下一篇:百分比布局通过代码设置属性

发表评论

最新留言

很好
[***.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