Android 项目(一):网络请求封装(一)
来源:互联网 发布:北京全国接单淘宝贷款 编辑:程序博客网 时间:2024/06/06 02:42
单独的使用网络连接相信大家都一看就懂,一看就会,但是在实际项目中感觉然并卵啊!我们不可能在每个需要网络请求的界面都写个网络请求,那样不仅代码量增多且重复,因此要想个办法将所有的网络请求提取出来,每当有页面需要网络请求就调用同一个方法,方便简洁。
一、网络状态
这一部分不进行详细介绍,书上网上都有许多类似的代码不进行赘述。
public class NetWorkDect { private static NetworkInfo networkInfo; private static ConnectivityManager mConnectivityManager; //该方法用于返回当前是否有网络 public static boolean checkNetworkState(){ if (BaseApplication.getBaseApplication() != null) { mConnectivityManager = (ConnectivityManager) BaseApplication.getBaseApplication() .getSystemService(BaseApplication.getBaseApplication().CONNECTIVITY_SERVICE); networkInfo = mConnectivityManager.getActiveNetworkInfo(); //1.判断是否有网络连接 boolean networkAvailable = networkInfo.isAvailable(); return networkAvailable; } return false ; } //该方法用于获取当前网络连接的类型信息 public String typeNetwork(){ if(networkInfo!=null){ int networkType = networkInfo.getType(); if(ConnectivityManager.TYPE_WIFI == networkType){ //当前为wifi网络 return "当前为wifi"; }else if(ConnectivityManager.TYPE_MOBILE == networkType){ //当前为mobile网络 return "当前为流量"; } } return "当前无网络"; }}
ps:注意添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission>
网络请求的封装与使用
网络请求的封装
这里采用Volley的请求方式进行简单的封装介绍。
思路:
1、采用单例(私有化构造器、公有的对象,公有的获得对象的方法),使得以后整个App的网络请求仅由一个实例进行,不会创建多个对象。
public class HttpUtils { //Volley方式的请求队列 private RequestQueue requestQueue; //私有化构造器 private HttpUtils() { requestQueue = Volley.newRequestQueue(BaseApplication.getBaseApplication()); } //公有的属性 private static HttpUtils mHttpUtils; //公有的获得对象的方法也即单例,不然会浪费资源 public static synchronized HttpUtils newInstance() { if (mHttpUtils == null) { mHttpUtils = new HttpUtils(); } return mHttpUtils; } //观察者模式,注意这里是public public interface onMyHttpListener { void onSuccess(String response); void onFialed(String error); void onNoNetWork(); } //添加请求的方法 public void addStringRequest(String url, HashMap<String, String> params, final onMyHttpListener listener) { //判断是否有网络 if (!NetWorkDect.checkNetworkState()) { listener.onNoNetWork(); } else { final StringRequest request = new StringRequest(url, new Response.Listener<String>() { @Override public void onResponse(String response) { listener.onSuccess(response); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { listener.onFialed(error.toString()); } }); requestQueue.add(request); } }}
网络请求的使用
public class BaseActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); HashMap<String,String> params=new HashMap<>(); HttpUtils.newInstance().addStringRequest("http://www.baidu.com", params, new HttpUtils.onMyHttpListener() { @Override public void onSuccess(String response) { } @Override public void onFialed(String error) { } @Override public void onNoNetWork() { } }); }}
补充BaseApplication:
public class BaseApplication extends Application { public static BaseApplication baseApplication; @Override public void onCreate() { super.onCreate(); baseApplication=BaseApplication.this; } public static BaseApplication getBaseApplication() { return baseApplication; }}
2 0
- Android 项目(一):网络请求封装(一)
- android网络请求组件(一)OkHttp3的封装使用
- android 网络请求框架总结(一)
- Android 网络请求(一)HttpURLConnection+OkHttp
- 一个iOS项目总结(一):网络接口的封装
- Android 网络编程(一)Http网络请求详解?
- java Action 请求封装(一)
- android Volley请求网络框架的使用(一)
- Android-BaseLine框架初识之网络请求(一)
- Android网络请求之HttpURLConnection小结(一)
- Android架构设计02-网络请求框架(一)
- Android Volley的使用(一)基本网络请求
- Android学习之网络请求(访问网路数据)一
- 网络请求工具类之OkHttp3封装(一)(支持缓存、日志、拦截器等)
- Retrofit+Rxjava 网络请求的简单封装(一)(观察者模式)
- iOS AFN 封装POST网络请求(AFURLSessionManager) (续一) upload表单提交方法
- (一)最流行的网络请求框架Rxjava2+Retrofit完美封装
- 网络框架的封装(一)
- hdu 1395 2^x mod n = 1(暴力题)
- hdu 1102 Constructing Roads (最小生成树)
- hdu 1162 Eddy's picture(最小生成树算法)
- hdu 1875 畅通工程再续
- hdu 1230 火星A+B
- Android 项目(一):网络请求封装(一)
- hdu 1863 畅通工程 (并查集+最小生成树)
- KVO实现机制
- hdu 1213 How Many Tables(并查集算法)
- hdu 1232 畅通工程(并查集算法)
- hdu 1272 小希的迷宫(并查集+最小生成树+队列)
- hdu 1879 继续畅通工程 (并查集+最小生成树)
- 装饰者模式(decorator)
- hdu 1598 find the most comfortable road (并查集+枚举)