整合volley+greendao+gson,让android开发变得非常容易

一、框架介绍
         1、Volley
         Google I/O 2013上发布的用于Android平台的网络通信库,能使网络通信更快、更简单、更健壮。实际使用下来,确实感受非常好,如官方所说。他提供了如下的便利功能:
         JSON,图像等的异步下载;
         网络请求的优先级处理
         网络请求的排序
         缓存
         多级别取消请求

        和Activity和生命周期的联动


            下载:git clone https://android.googlesource.com/platform/frameworks/volley 



         2、GreenDao
        目前android经常用的orm框架主要有greenDAO、OrmLite、AndrORM。 综合了网上的各种评价,greenDAO的运行效率最高,内存消耗最少,性能最佳,支持一对多,多对多,且无需涉及sql语言。因此决定采用greenDAO框架,对项目的orm框架进行改进。


       下载:git clone https://github.com/greenrobot/greenDAO.git

    3、Gson
    该框架也是出自Google,无需annotation就可以轻松将实体序列化,同时又可以通过annotation来灵活配置需要序列化的字段。


二、整合
     通过Volley获取服务器数据,通过gson将json数据转换成实体,通过GreenDao直接将实体存入sqlite数据库,使用时可直接从sqlite取出实体类。整个流程无需接触通信,数据库操作,且全部为实体操作,完全为java的编程习惯。

    1、使用Volley、GreenDao从服务器获取数据转换成实体

     一个简单request请求,该请求返回的是一个json对象

mQueue = Volley.newRequestQueue(getApplicationContext());  
mQueue.add(new JsonObjectRequest(Method.GET, url, null,  
            new Listener() {  
                @Override  
                public void onResponse(JSONObject response) {  
                    Log.d(TAG, "response : " + response.toString());  
                }  
            }, null));  
mQueue.start(); 
       现在我们需要修改让其直接返回实体对象,首先需要一个GsonRequest,来处理返回的数据,将其转换成我们所要的对象
import java.io.UnsupportedEncodingException;
import java.util.Map;

import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;

public class GsonRequest<T> extends Request<T> {
	private final Gson gson = new Gson();
	private final Class<T> clazz;
	private final Map<String, String> headers;
	private final Listener<T> listener;

	/**
	 * Make a GET request and return a parsed object from JSON.
	 *
	 * @param url
	 *            URL of the request to make
	 * @param clazz
	 *            Relevant class object, for Gson's reflection
	 * @param headers
	 *            Map of request headers
	 */
	public GsonRequest(String url, Class<T> clazz, Map<String, String> headers,
			Listener<T> 
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值