AsyncTask获取网络数据
来源:互联网 发布:网络语言膜法什么意思 编辑:程序博客网 时间:2024/06/06 01:51
AsyncTask 实现主要
方法1 :doInBackground 这是自动生成的,这个方法执行异步任务运行在子线程中
方法2:onProgressUpdate (这个需要自己写)这个就是进度条,要做进度条的话还得加个 onPreExecute 方法,这个是第一执行,在doInBackground前面调用(这个不怎么重要,就不写了,可以上网看那些大牛写的)
方法3:onPostExecute (这个也需要自己写)这个就是主线程。里面做UI更新,这个方法在主线程执行,doInBackground任务执行的结果作为这个方法的参数返回
其中1,3是必须写的,进度条 的话要搭配onPreExecute。下面就是代码
private void getDatas(String path) {
private String s;
//onPostExecute这个方法需要自己写,相当于handler RunOnUIThread,更新UI界面
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//用gson解析网上的json串,需要导入gson依赖,这个是我用的json串,自己看情况修改
DateBean dateBean = gson.fromJson(s, DateBean.class);
List<DateBean.ItemListBeanX.DataBeanX.ItemListBean> itemList1 = dateBean.getItemList().get(0).getData().getItemList();
myAdapter adapter = new myAdapter(itemList1);
listView.setAdapter(adapter);
}
//就是子线程,用来做耗时操作的
protected String doInBackground(String... strings) {
try {
String string = strings[0];
URL url = new URL(string);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);connection.setReadTimeout(5000);
int code = connection.getResponseCode();
if (code==HttpURLConnection.HTTP_OK){
InputStream is = connection.getInputStream();
s = StreamTools.readFromFile(is); //StreamTools工具类,可以看我另外一个
return s;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(path); //这个很关键,execute就是告诉 AsyncTask开始执行了,启动了。 一定要写
}
这个就是简单点的AsyncTask 了,不过要注意:
优缺点很明显,优点就是简单快捷,缺点就是当有多个异步操作时,就变得复杂起来,而且AsyncTask在更新UI时,特别是大量的数据时候,放弃吧。
阅读全文
2 0
- AsyncTask获取网络数据
- Asynctask获取网络数据使用
- XListView+ImageLoader+AsyncTask+网络获取数据综合
- 如何用线程Asynctask获取网络数据
- AsyncTask 与 HttpURLConnection获取网络数据
- AsyncTask获取网络图片
- AsyncTask网络请求数据
- AsyncTask加载网络数据
- AsyncTask获取数据库数据
- 网络请求数据之AsyncTask
- AsyncTask异步访问网络数据
- AsyncTask异步加载网络数据
- AsyncTask网络解析-----缓存数据
- Android-网络请求数据AsyncTask
- ListView结合AsyncTask获取数据
- 从网络获取数据(1)从newThread到AsyncTask在到IntentService
- AsyncTask 网络获取图片和Json数据加载到ListView上
- 通过AsyncTask异步获取网络图片
- nodejs中的管道流和链式流
- opencv3.0.0 读写视频
- JavaScript中的undefined与null
- codeforces 813C The Tag Game dfs
- A分类和预测算法的评估
- AsyncTask获取网络数据
- JSONObject、JSONArray
- Git分支管理的策略梳理
- 教大家如何区分屏蔽数据线的好坏
- 微信小程序笔记心得
- selenium3.x 踏坑记
- 【dijkstra + 优先队列 && bfs && A*】POJ
- somnic各应用下载目录
- web.xml 中的listener、 filter、servlet 加载顺序及其详解