Retrofit

Retrofit是一套RESTful架构的Android(Java)客户端实现,基于注解,提供JSON to POJO(Plain Ordinary Java Object,简单Java对象),POJO to JSON,网络请求(POST,GET,PUT,DELETE等)封装。

Rxandroid
Rx是响应式编程的意思, 本质是观察者模式,
是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程,请看下面示例:

/** * 数据解析实体 */public class IpInfo {    public String country;    public String country_id;    public String area;    public String area_id;    public String ip;}
public class BaseResponse {    public int code;}public class GetIpInfoResponse extends BaseResponse {    public IpInfo data;}
/** * 作者:cover on 2016/5/25 11:22 * 邮箱:185214487@qq.com */public class ServiceFactory {    public static final String BASE_URL = "http://ip.taobao.com";    private Retrofit mRetrofit;    private static ServiceFactory mInstance;    private ApiService apiService;    public static ServiceFactory getmInstance() {        if (mInstance == null) {            synchronized (ServiceFactory.class) {                mInstance = new ServiceFactory();            }        }        return mInstance;    }    private ServiceFactory() {        createSignRetrofit();    }    //mRetrofit 初始化    private void createSignRetrofit() {        mRetrofit = new Retrofit.Builder()                .baseUrl(BASE_URL)                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .build();    }    public ApiService getapiService() {        if (apiService == null) {            apiService = mRetrofit.create(ApiService.class);        }        return apiService;    }}
/** * 接口配置 */public interface ApiService {  /* @GET("service/getIpInfo.php") Call<GetIpInfoResponse> getIpInfo(@Query("ip") String ip);*/    @GET("service/getIpInfo.php")    Observable<GetIpInfoResponse> getIpInfo(@Query("ip") String ip);}

最后在Activity(根据你需要的情况而定)中调用

public class MainActivity extends AppCompatActivity {    private static final String ENDPOINT = "http://ip.taobao.com";    private TextView mTvContent;    private ProgressBar mProgressBar;    private ServiceFactory serviceFactory;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        setSupportActionBar(toolbar);        mTvContent = (TextView) findViewById(R.id.tv_content);        //得到实例        serviceFactory=ServiceFactory.getmInstance();        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);        fab.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                serviceFactory.getapiService().getIpInfo("63.223.108.42")                        .subscribeOn(Schedulers.io())                        .observeOn(AndroidSchedulers.mainThread())                        .subscribe(new Subscriber<GetIpInfoResponse>() {                            @Override                            public void onCompleted() {                                mProgressBar.setVisibility(View.GONE);                            }                            @Override                            public void onError(Throwable e) {                                mProgressBar.setVisibility(View.GONE);                                mTvContent.setText(e.getMessage());                            }                            @Override                            public void onNext(GetIpInfoResponse getIpInfoResponse) {                                mTvContent.setText(getIpInfoResponse.data.country);                            }                        });            }        });    }}

添加依赖包
compile ‘io.reactivex:rxandroid:1.1.0’
compile ‘io.reactivex:rxjava:1.1.0’
compile ‘com.squareup.retrofit:retrofit:2.0.0-beta2’
compile ‘com.squareup.retrofit:converter-gson:2.0.0-beta2’
compile ‘com.squareup.retrofit:adapter-rxjava:2.0.0-beta2’

更多相关文章

  1. android JNI 多线程 C函数回调
  2. Android(安卓)ContentObserver实现数据库监听
  3. ARouter 源码学习之Compiler
  4. Android(安卓)Orm框架(GreenDao)
  5. Android(安卓)ApiDemos示例解析(120):Views->Gallery->2. People
  6. Android(安卓)在子线程中更新UI的几种方法示例
  7. ADB调试命令大全
  8. android uri用法
  9. Android(安卓)ApiDemos示例解析(42):App->Service->Remote Servic

随机推荐

  1. Android浏览器显示大分辨率图片的问题
  2. android中控制EditText不可编辑的问题
  3. android里面的USB功能-----Accessory模式
  4. 如何打包你自己的apk程序到Android里?
  5. Android(安卓)之 Activity和Intent用法介
  6. 简单介绍Android中Activity的四种启动模
  7. android select选择器 checkbox改外观,but
  8. Android(安卓)开发程序员必备网站
  9. Android(安卓)五大布局(LinearLayout、Fra
  10. 自己对android开机速度优化的一点理解