*【异步加载】

来源:互联网 发布:linux ps命令中括号 编辑:程序博客网 时间:2024/05/27 14:14

一、异步加载:就是用异步的方式去加载数据

二、使用异步加载的原因
1.android是单线程模型
2.耗时操作都必须放在单独的线程中去做,而不能去阻塞UI线程

三、异步加载最常用的两种方式
1.多线程\线程池
2.AsyncTask(底层也是基于线程池来实现的)

四、AsyncTask定义了三种泛型类型 Params,Progress和Result

Params 启动任务执行的输入参数,比如HTTP请求的URL。
Progress 后台任务执行的百分比。
Result 后台执行任务最终返回的结果,比如String。

五、利用异步加载来实现json格式的获取:
首先定义异步加载类来获取json数据:
jsonString数据的获取需要用到InputStream
构造ReadStream(InputStream is )得到String 数据 传给jsonString :
1、InputStremReader 读取 InputStream
2、转为BufferedStream 便于修改
3、逐行读取数据line = br.readline()
只要 line !=null –>result +=line
4、return result
获取到的json数据封装成Bean格式之后再传给Adapter(下一节)


一、如何通过Url获取网络反馈的Json字符串结果:
1、重写doInBackground(Params…) 获取请求的网址,调用自定义方法getJson(String url);
2、自定义方法getJson中定义URL,获取inputStream流
3、自定义方法readStream(InputStream is),将inputStream流中的字节流拼装成字符串;
4、自定义方法getJson调用readeStream()方法,并将InputStream流作为参数传递。这样既可获得json串结果。

通过InputStream读取一个网络信息。
1.InputStream字节流,通过InputStreamReader(-,”utf-8”)指定其格式将字节流转化为字符流。
2.再通过BufferedReader将这样一个字符流以Buffer的形式读取出来,最终拼接到result里面,这样就完成了整个数据的读取

0 0
原创粉丝点击