安卓常用第三方工具

做过安卓开发的都知道,安卓如果不联网就是死的,有了网络就活起来了。而联网用的最多也是最重要的就是请求网络数据和下载图片。我来介绍两个我最常用的两个网络工具:retrofit和picasso
  • retrofit:
    传送门 http://square.github.io/retrofit/   是开源的一个专门用于请求网络数据的工具,如果项目中有okhttp,那么是依靠okhttp来请求的。可以很方便的处理json提交、表单提交、普通get等等方式,并且如果是body的提交,它可以将提交的对象自动的转换成接口所需要的格式数据,获取的数据也是自动的将json转换成对应的对象,从而避免了手动书写json解析函数来处理。

QQ图片20150409155526.png


    实现方式 :需要实现一个restAdapter来处理网络请求,  如下:
RestAdapter _phpAdapter = new RestAdapter.Builder().setEndpoint(Config.BASE_URL).setLogLevel(RestAdapter.LogLevel.FULL).build();
setEndpoint是设置目标服务器的地址,可以是IP也可以是域名。setLogLevel是设置显示日志,即详细的网络请求参数,如:请求路径、协议版本、头部、body、等等等等很详细。
    接下来就是具体的请求了 ,  如下代码:   
    /**
    *  @GET是方式,  有@POST @GET 等等
    *  下面是自定义一个函数   @Query() String func  表示在url后面携带的参数,即www.xxx.com/xxx.php?a=xxx&b=xxx a,b对应的就是@Query(xxx)括号里面的字符串,=号后面就是 String func传递过来的参数。  Callback<Object> 就是回调的类型。
    * getAder是其他地方会调用的一个函数,函数内只需要restAdapter.create某一个接口即可。
    */
    private interface GetAdverService{
        @GET(APICode.ADVER_PHP)
        void getAdver(@Query(APICode.API_INTERFACE) String func, Callback<AdverResponse> callback);
    }
    public void getAdver(Callback<AdverResponse> callback){
        GetAdverService mGetAdverService = _phpAdapter.create(GetAdverService.class);
        mGetAdverService.getAdver(APICode.ADVER_GET, callback);
    }
 
    文档传送门 http://square.github.io/retrof ... .html

 
    接下来看调用
   
            XXXX.getAdver(new Callback<AdverResponse>() {
            @Override
            public void success(AdverResponse adverResponse, Response response) {
                
            }

            @Override
            public void failure(RetrofitError error) {

            }
        });
一目了然,成功与否,成功的话返回的是什么对象什么数据,很好调用。
 
android studio如果要用这个 只需要在gradle文件配一句话:
dependencies {
    compile 'com.squareup.retrofit:retrofit:1.9.0'
}
自动的会下载下来,并且相关的工具也会下载下来,如:gson  okhttp。eclipse的话请自行去官网下载
 
 
 
//======================================================
 
 
 

下面是另一个工具:picasso
     传送门 http://square.github.io/picasso/   这个也是square的一个工具,也是开源的。这个工具有个好处是,高度集成,调用简单方便,无需配置,只需要网络权限打开即可。
调用时,一句代码即可,如下代码:
Picasso.with(context).setDebugging(Config.DEBUG);    //设置是否查看图片源,有红、黄、绿三种颜色,代表来自网络,来自内存,来自存储器。
Picasso.with(context).load(url).placeholder(defaultIcon).error(defaultIcon).into(img);  //load加载图片,placeholder加载中显示哪张图,error错误显示哪张图,into加载到谁。并且支持在adapter中异步加载。

QQ图片20150409155602.png

    最近新出了一个fresco的图片下载工具,我也看了下,需要配置写文件,还要使用它自定义的布局文件,所以不建议使用。picasso有个弊端,就是太高度集成,导致支持自定义的太少,不过也支持自定义,但是不多。picasso自带双缓存,并且会自动清理不需要的图片内存。它可以设置获取的图片的大小,从而减少内存。在adapter中需要取消已经不在视野范围的ImageView图片资源的加载,否则会导致图片错位,Picasso已经解决了这个问题。
QQ图片20150409154927.png

 
    文档传送门 http://square.github.io/retrof ... .html

 
    如上,是我用的最多的两个网络工具。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值