您的位置:首页 > 理论基础 > 计算机网络

Android Netroid框架介绍及使用,又一简单粗暴的网络框架!<Garry进阶(二)>

2014-12-02 15:44 891 查看
转载请注明出处:/article/1749484.html

概述

当我还在为每次为网络请求写这繁琐的代码时,师兄教会了我Volley,在之后,我遇到了Netroid,Netroid框架是一款基于Volley之上的更为方便的一个开源框架,提供执行网络请求、缓存返回结果、批量图片加载、大文件断点下载的常见Http交互功能。致力于避免每个项目重复开发基础Http功能,随着在公司的进一步学习,我也越发觉得GitHub真的很好,对于Netroid框架的介绍,详情请看http://netroid.cn/,这是netroid的官方文档,简单说下吧。

导入Netroid

这里要注意,如果各位不使用maven的话,要去找最新的Netroid包,目前最新是1.2.1,在maven项目目录里的pom.xml,在<dependencies>标签里添加 maven就会自动下载导入netroid项目到我们工程里了,maven确实挺好用或者直接下载netroid的jar包,放在项目目录下的libs文件里(没有的话就需要新建),导包也就好了

添加权限

AndroidManifest.xml
,添加Netroid SDK需要的权限到
<manifest>
标签下:
<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
其实按着官方中文文档完全可以搞定,这里还是把一些小细节说出来方便大家吧,初始化时,注意,最重要的一句代码!Netroid.init();  当然,Netroid你需要自己去写,按照文档中开始使用里的步骤,自定义自己要用的netroid.从以下开始就已我的项目来讲,首先,我要用netroid解析这么一段JSONObject:https://api.github.com ,

代码部分

Netroid.java部分
<span style="font-family:SimSun;font-size:14px;color:#333333;">package com.Garry.textrobolectric;import java.io.File;import org.apache.http.protocol.HTTP;import org.json.JSONObject;import android.content.Context;import com.duowan.mobile.netroid.Listener;import com.duowan.mobile.netroid.Network;import com.duowan.mobile.netroid.RequestQueue;import com.duowan.mobile.netroid.cache.DiskCache;import com.duowan.mobile.netroid.request.JsonObjectRequest;import com.duowan.mobile.netroid.stack.HurlStack;import com.duowan.mobile.netroid.toolbox.BasicNetwork;import com.duowan.mobile.netroid.toolbox.FileDownloader;public class Netroid {	// Netroid入口,私有该实例,提供方法对外服务。	private static RequestQueue mRequestQueue;	// 图片加载管理器,私有该实例,提供方法对外服务。	// private static ImageLoader mImageLoader;	// 文件下载管理器,私有该实例,提供方法对外服务。	private static FileDownloader mFileDownloader;	private Netroid() {	}	public static void init(Context ctx) {		if (mRequestQueue != null)			throw new IllegalStateException("initialized");		// 创建Netroid主类,指定硬盘缓存方案		Network network = new BasicNetwork(				new HurlStack(Const.USER_AGENT, null), HTTP.UTF_8);		mRequestQueue = new RequestQueue(network, 4, new DiskCache(new File(				ctx.getCacheDir(), Const.HTTP_DISK_CACHE_DIR_NAME),				Const.HTTP_DISK_CACHE_SIZE));		// 创建ImageLoader实例,指定内存缓存方案		// 注:SelfImageLoader的实现示例请查看图片加载的相关文档		// 注:ImageLoader及FileDownloader不是必须初始化的组件,如果没有用处,不需要创建实例		// mImageLoader = new SelfImageLoader(mRequestQueue, new		// BitmapImageCache(		// Const.HTTP_MEMORY_CACHE_SIZE));		//		// mFileDownloader = new FileDownloader(mRequestQueue, 1);		mRequestQueue.start();	}	// 示例做法:执行自定义请求以获得书籍列表	// public static void getBookList(int pageNo, Listener<List<Book>> listener)	// {	// mRequestQueue.add(new BookListRequest("http://server.com/book_list/"	// + pageNo, listener));	// }	// 专门用来解析那段	public static void getApiUrl(int method, String url,			JSONObject jsonRequest, Listener<JSONObject> listener) {		mRequestQueue.add(new JsonObjectRequest(method, url, jsonRequest,				listener));	}	// 加载单张图片	// public static void displayImage(String url, ImageView imageView) {	// ImageLoader.ImageListener listener = ImageLoader.getImageListener(	// imageView, 0, 0);	// mImageLoader.get(url, listener, 0, 0);	// }	// // 批量加载图片	// public static void displayImage(String url, NetworkImageView imageView) {	// imageView.setImageUrl(url, mImageLoader);	// }	// 执行文件下载请求	public static FileDownloader.DownloadController addFileDownload(			String storeFilePath, String url, Listener<Void> listener) {		return mFileDownloader.add(storeFilePath, url, listener);	}	public class Const {		// http parameters		public static final int HTTP_MEMORY_CACHE_SIZE = 2 * 1024 * 1024; // 2MB		public static final int HTTP_DISK_CACHE_SIZE = 50 * 1024 * 1024; // 50MB		public static final String HTTP_DISK_CACHE_DIR_NAME = "netroid";		public static final String USER_AGENT = "netroid.cn";	}}</span>
MainActivity部分
<span style="font-family:SimSun;font-size:14px;color:#333333;">package com.Garry.textrobolectric;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.TextView;import android.widget.Toast;import butterknife.ButterKnife;import butterknife.InjectView;import com.duowan.mobile.netroid.Listener;import com.duowan.mobile.netroid.NetroidError;import com.example.textrobolectric.R;public class MainActivity extends Activity {	// String json = "{\"name\":\"Garry\",\"age\":22}";	String url = "https://api.github.com";	int method = 0;	@InjectView(R.id.tv_hello)	TextView tv;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		ButterKnife.inject(this);		// tv.setText("Hello");		// Gson gson = new Gson();		// Person person = gson.fromJson(json, Person.class);		// Log.e("GSON1", person.toString());		Netroid.init(this);		Netroid.getApiUrl(method, url, null, new Listener<JSONObject>() {			public void onSuccess(JSONObject response) {				Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_LONG)						.show();				String json_string = response.toString();				Log.e("Tag", json_string);			}			@Override			public void onError(NetroidError error) {				Toast.makeText(MainActivity.this, error.getMessage(),						Toast.LENGTH_LONG).show();			}		});	}}</span>
MainActivity部分也没什么好讲了,哦对,我用了ButterKnife注解包,大家可以不用,直接用原来的findviewbyid去找到控件就好
这里边要注意,method = 0 时 ,对应的HTTP 方法是GET方法,而看到Netroid源代码里边
当Method为GET时,jsonRequest可以为空,也就避免了空指针,好啦,运行项目
可以看到,我们已经成功将url里的json格式数据给解析出来了,好了,简单的Netroid框架使用就介绍到这。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐