异步任务AsyncTask的使用
来源:互联网 发布:网络彩票开售 编辑:程序博客网 时间:2024/04/20 01:08
AsyncTask就是对Thread和Handler的结合进行了封装而已,在进行一些耗时的网络操作时使用。
第一步,定义一个类继承于AsyncTask类,代码如下:
private class MyAsyncTask extends AsyncTask<String, Integer, Bitmap>{@Overrideprotected void onPostExecute(Bitmap result) {super.onPostExecute(result);imageView.setImageBitmap(result);pd.dismiss();}@Overrideprotected void onPreExecute() {super.onPreExecute();pd.show();}@Overrideprotected Bitmap doInBackground(String... params) {Bitmap bitmap = null;InputStream is = null;HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet(params[0]);try {HttpResponse httpResponse = httpClient.execute(httpGet);if(httpResponse.getStatusLine().getStatusCode() == 200){is = httpResponse.getEntity().getContent();long length = httpResponse.getEntity().getContentLength();int len = 0;byte[] buffer = new byte[1024];long temp = 0;ByteArrayOutputStream os = new ByteArrayOutputStream();while((len = is.read(buffer))!= -1){os.write(buffer,0,len);temp += len;int value = (int)((temp / length)*100);publishProgress(value);}byte[] all = os.toByteArray();bitmap = BitmapFactory.decodeByteArray(all, 0, all.length);}} catch (Exception e) {e.printStackTrace();} return bitmap;}@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);pd.setProgress(values[0]);} }(1)AsyncTask类后面的三个参数的意义,第一个代表调用者传进来的参数的类型,第二个代表更新进度条的数据类 型,第三个代表整个处理结果返回的类型
(2)调用这个类的时候,首先会执行onPreExecute方法,该方法在处理耗时操作数据之前执行。
接着doInBackgroud方法执行,该方法就是用来处理耗时的操作,像上述代码的网络获取数据。
onProgressUpdate方法是用来更新进度条的最新进度值
onPostExecute方法是用来更新UI的,类似于主线程的Handler操作
(3)doInBackgroud方法里的publishProgress就是用来通知onProgressUpdate方法更新进度条的。
(4)doInBackgroud、onProgressUpdate、onPostExecute三个方法里的参数和AsyncTask类后的参数是一一匹配的。
第二步,主线程调用AsyncTask
new MyAsyncTask().execute(path);其中path就是我们传进来访问网络的URL字符串。该path会传给doInBackgroud的参数params字符串数组的某个元素
- 异步任务AsyncTask的使用
- AsyncTask异步任务的使用
- 异步任务AsyncTask使用
- 异步任务AsyncTask使用
- Android异步任务之AsyncTask的使用
- Android 异步任务 AsyncTask 的使用总结
- Android 异步任务AsyncTask的使用
- 异步任务AsyncTask的便利使用
- 异步任务AsyncTask的使用参考
- 异步任务——AsyncTask的使用
- AsyncTask异步任务类的使用
- Android中异步任务AsyncTask的使用
- Android AsyncTask异步任务的使用
- Android 异步任务AsyncTask的使用
- AsyncTask异步任务使用解析
- 使用AsyncTask运行异步任务
- 使用AsyncTask运行异步任务
- AsyncTask异步任务使用详解
- ibatis sql_Map中出现异常:Cause: java.lang.RuntimeException: JavaBeansDataExchange could not instantiate..
- 3.8 《硬啃设计模式》 第17章 结构型设计模式小结
- 对于计算机语言的认识
- 基于IBM Cognos Report studio的商业智能分析方案(专业报表、Drill Through、切片、旋转)
- 图像处理特征提取(一):LINK错误的解决
- 异步任务AsyncTask的使用
- Best Time to Buy and Sell Stock II 最佳时间买入卖出股票(多次买卖)@LeetCode
- 星号图
- Web服务器父与子 Apache和Tomcat区别
- Hadoop经典书籍资料收藏(35本)
- JMS模拟ActiveMq代理服务器,实现消息收发
- Selenium IDE(2)
- 稀疏表达:向量、矩阵与张量(中)
- Java中Static方法和Static程序块的用法总结