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框架使用就介绍到这。
相关文章推荐
- 6.3 强大的网络请求第三方框架 Retrofit 的介绍和使用<未完待翻译>
- OSCache缓存框架介绍 局部缓存和全局缓存的使用和基本配置项 &lt;转&gt;
- ViewPager 和 ActionBarSherlock 的使用 <Garry进阶(一)>
- Android 仿QQ侧边栏,自定义view的学习 <Garry进阶(三)>
- Android实战简易教程<十四>(介绍SwipeMenuListView-简单实现类似QQ的滑动删除效果)
- HTML中<div>标签的一个简单的使用和介绍
- <Android>在Activity被非正常杀死并重建时,使用savedInstanceState进行数据恢复的简单实例
- 图片加载框架简单介绍<一> ImageLoader 的基本使用
- 图片加载框架简单介绍<三> Glide的基本使用
- Mina框架简单介绍<适合初学者了解>
- 图片加载框架简单介绍<二> Picasso 的基本使用
- Android: Git/Gerrit/Repo 的使用 <二>
- android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
- <为知更新>windows下使用android隐藏api的方法
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- HTML中<a>标签的target属性--在使用frame框架做网页时可用到
- C#_delegate - Pair<T> & 简单顺序逆序 & 方法委托(在Pair类下)&枚举类型 混搭使用
- [d3.js] D3.JS 基于javascript的图表展示库<一>----简单介绍
- 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate
- 最简单的struts2中使用<s:iterator>实现隔行变色代码[珍藏版]