【AsyncTask使用】Android AsyncTask 使用完全解析
来源:互联网 发布:mac java 安装问题 编辑:程序博客网 时间:2024/05/18 03:40
代码
/** * 该类中方法的执行顺序依次为:onPreExecute, doInBackground, onPostExecute */ private class MyAsyncTask extends AsyncTask<String, Integer, String> { /** * 主线程中执行 * 在execute()被调用后首先执行 * 一般用来在执行后台任务前对UI做一些标记 */ @Override protected void onPreExecute() { super.onPreExecute(); System.out.println("MyAsyncTask.onPreExecute"); } /** * 子线程中执行,执行一些耗时操作,关键方法 * 在执行过程中可以调用publishProgress(Progress... values)来更新进度信息。 */ @Override protected String doInBackground(String... params) { System.out.println("MyAsyncTask.doInBackground"); //只是模拟了耗时操作 int count = 0; for (int i = 0; i < 10; i++) { try { count++; publishProgress((count % 100) * 10); Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } } // publishProgress((int) ((count / (float) total) * 100)); return "耗时操作执行完毕"; } /** * 主线程中执行 * 在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件中 */ @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); progressBar.setProgress(values[0]); textView.setText("loading..." + values[0] + "%"); System.out.println("MyAsyncTask.onProgressUpdate"); } /** * 在主线程中,当后台操作结束时,此方法将会被调用 * 计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上。 */ @Override protected void onPostExecute(String aVoid) { super.onPostExecute(aVoid); System.out.println("MyAsyncTask.onPostExecute aVoid=" + aVoid); textView.setText(aVoid); } /** * 主线程中执行 * 当异步任务取消后的,会回调该函数。在该方法内可以更新UI */ @Override protected void onCancelled() { super.onCancelled(); System.out.println("MyAsyncTask.onCancelled"); progressBar.setProgress(0); textView.setText("0"); } @Override protected void onCancelled(String s) { super.onCancelled(s); } }
总结
- 首先执行onPreExecute,主线程中执行准备工作,
- doInBackground子线程中执行耗时操作,其返回结果会传递到onPostExecute方法中,可调用publishProgress(Progress…values)来更新进度信息启动onProgressUpdate
- onProgressUpdate(在主线程中执行)
- onPostExecute,doInBackground执行完毕后调用这个,主线程中执行
- onCancelled()主线程中执行,当异步任务取消回调该函数,
阅读全文
0 0
- 【AsyncTask使用】Android AsyncTask 使用完全解析
- Android AsyncTask完全解析
- Android AsyncTask完全解析
- Android AsyncTask完全解析
- Android AsyncTask完全解析
- Android AsyncTask完全解析
- Android AsyncTask完全解析
- 【AsyncTask】Android AsyncTask使用入门
- AsyncTask 使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- [Android]异步任务AsyncTask使用解析
- 如何组织大型JavaScript应用中的代码?
- SQL整理
- Qt连接SQL server数据库
- nodejs Excel的下载导出
- 系统流程图,数据流程图和Ipo图的介绍
- 【AsyncTask使用】Android AsyncTask 使用完全解析
- Linux下redis安装与使用
- 关于4.x dex引起的java.lang.NoClassDefFoundError等问题
- c# 二进制文件编程实践
- ROS机器人星火计划公开课总结
- python——图像处理
- JAVA 基础语法(四)——循环结构(while,do...while,for,break,continue)
- django WEB聊天室项目
- android6.0源码分析之Camera API2.0下的Preview(预览)流程分析