关于网络请求的学习理解

来源:互联网 发布:学数据库需要什么基础 编辑:程序博客网 时间:2024/05/29 04:37


不明白的地方:


1、我断网之前,个人中心什么都没有,连上网之后,什么也没有动,就可以自动的连接上去了;
————还是上一次的网络么?——但是我在网络请求前面加判断了啊,没网应该是直接将代码执行过去的啊?

————难道是关于网络超时相关的么?


2、在okhttp发起网络请求的里面,子线程里面不能做吐丝操作,不能是没有数据返回的!!子线程的那个地方,前后都不可以!!


ListView位置的设置



listAdapter = new DirectionAttListAdapter(mDataAll,DirectionMangerActivity.this);
listAdapter.notifyDataSetChanged();
check_list.setAdapter(listAdapter);
check_list.setSelection(selectId); //关键放在适配之后


mListView.smoothScrollToPosition(0);//移动到首部
mListView.smoothScrollToPosition(listView.getCount() - 1);//移动到尾部



/**
* listView 如果不优化,会出现的问题:
* 1- 会次调用getView方法,都会创建 新的对象,这样会造成内存的浪费,甚至溢出,,OOM 异常( out of memary ) 
* 2- 如果getView 方法 执行时间,超过100毫秒,会造成 界面卡顿 ,降低用户体验。
*
* 优化的目标:
* 1- 最主要的目标就是让getView 方法 ,尽可能快的执行完,提高用户体验。
* 2- 减少创建对象,防止内存溢出。
*/

/*
* 第二步优化,使用ViewHolder 
* 的目标是减少,findViewById的操作。
* 第一次获得view对象时,找到view中子view,并打包,设置给vh,将vh通过setTag 背在view 的身上,
* 以后,只要能获得view,就可以通过getTag 获得背包,vh,然后,通过,vh中的变量来引用view 中的子View 从而减少了
* findViewById 这个方法的执行
*/


数据的传递

intent.putExtra("uid", int类型);
getIntExtra(name, defaultValue);  也是可以传递数字的,defaultValue是默认字段;

还有一种是通过Bundle,这两者有什么区别呢?


方法一: 
如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 

Java代码 
intent.putStringArrayListExtra(name, value)  
intent.putIntegerArrayListExtra(name, value)  


http://www.cnblogs.com/lee0oo0/archive/2012/09/24/2699805.html


json数据的解析

从网络得到json解析后,怎么把数据绑定到listview?

其实,就是在网络请求内部设置:

adapter = new MyAdapter();
listview.setAdapter(adapter);

因为网络请求是异步操作,如果不在里面设置adapter的话,adapter的数据源就是一个null,会报空指针错误;

// data没有数据的时候,也会报错的===》下标越界的错误

ToolUtils.i("sectionSummaryListBean.data==========" + sectionSummaryListBean.data.get(0).toString());  


百度搜索:new Gson().toJson(new User("zhy", "123")  ——Okhttp---Post String
Gson可以将Java对象转换成JSON,也可能将JSON转换成Java对象。
 Gson里最重要的对象有2个Gson 和 GsonBuilder
 Gson有2个最基本的方法
1) toJson() – 转换java 对象到JSON
2) fromJson() – 转换JSON到java对象



关于xUtils的使用(不使用)

xUtils在android5.0上报错IOException: stack size 1036kb,在模拟器上面没有问题,但是部署在真机上面就报错,

但是在我的Nexus5上不能正常运行,经过查找资料发现问题所在:
是xUtils在android5.0上有bug ,更换最新的jar包就可以了。——还是有一些兼容行的问题
GitHub:https://github.com/wyouflf/xUtils



OkHttp的学习和使用

Android 一个改善的okHttp封装库  http://blog.csdn.net/lmj623565791/article/details/49734867/#reply
直接使用高手封装好的方法,直接使用就可以了;


加载网络图片

picasso的使用简单明了,一行代码直接就可以实现;http://blog.csdn.net/qq_30498273/article/details/51281856
网络框架的话,我准备使用OkHttp,问题是图片的加载我需要额外专门找一个框架么?感觉图片的处理有点麻烦了、
volleyNetworkImageView

哦,直接通过url加载图片,就不需要在考虑其他方便了么?

里面的三级缓存他都已经做好了

或者用其他第三方的图片加载框架都可以

universal-image-Loader,picasso等也可以


圆形头像的逻辑处理

Android图片上传(头像裁切+原图原样) http://www.2cto.com/kf/201501/371520.html

Android Bitmap 与 Drawable之间的区别和转换  http://zhidao.baidu.com/link?url=qctF-NTMKml0R7Fjdxn-oE-4RUG1RvAPL5rkvHGpI3RO4iTSIF0Mh2RSfdH5XmzJMBI5eTvUbDD48QcjjLSQZgo1osY3K3ua_on3v7SwIO7

android保存bitmap   http://blog.csdn.net/cstarbl/article/details/17465467

Android 一个改善的okHttp封装库       http://blog.csdn.net/lmj623565791/article/details/49734867/#reply
基于POST的文件上传(类似web上的表单)——.addFile("mFile", "test1.txt", file2)//


头像的刷新问题,    Picasso加载相同的url,没变动???————ImageLoader结合它的参数进行设置,先实现效果再说了;

Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

http://blog.csdn.net/jdsjlzx/article/details/44160603/

检测网络是否可用

/**
* 检测网络是否可用
* 需要的是两个权限,而不仅仅是一个
*     <uses-permission android:name="android.permission.INTERNET"/>
*     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
* @param context
* @return
*/

public static boolean isNetWorkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable() && mNetworkInfo.isConnected();
}
}


return false;

}

0 0
原创粉丝点击