AsyncTask的基本使用
// String --> doInBackground(Params... params)的参数
// File --> publishProgress(Progress... values)
// onProgressUpdate(Progress... values)的参数
// Void --> doInBackground()的返回值,onPostExecute(Result result)的参数
private class ScanMediaTask extends AsyncTask<String, File, Void>{
@Override
protected void onPreExecute() {
//此执行完后,马上调用doInBackground()方法
super.onPreExecute();
}
@Override
protected Void doInBackground(String... params) {
//params为 new ScanMediaTask().execute("mnt/sdcard/");中传过来的String
//在此方法中做主要操作
File file = new File(params[0]);
searchAllMedias(file);
return null;
}
@Override
protected void onProgressUpdate(File... values) {
//values为 publishProgress(file);中传过来的file
mAdapter.addItem(values[0]);
mAdapter.notifyDataSetChanged();
}
@Override
protected void onPostExecute(Void result) {
//doInBackground()运行完后自动调用,result为doInBackground()的返回值
super.onPostExecute(result);
}
private void searchAllMedias(File f) {
if(f!=null && f.exists()
&& f.isDirectory()){
File[] files = f.listFiles();
if(files != null){
for (File file : files) {
if(file.isDirectory()){
searchAllMedias(file);
}else if(file.exists() && file.canRead()
&& FileUtils.isVideoOrAudio(file)){
//调用此方法时,将会自动调用onProgressUpdate()方法
publishProgress(file);
}
}
}
}
}
}
AsyncTask的基本使用的更多相关文章
- Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案
一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...
- Android笔记——AsyncTask介绍
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...
- Android线程管理之AsyncTask异步任务
前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相 ...
- Android中使用AsyncTask实现文件下载以及进度更新提示
Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单.相对Handler来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和 ...
- 阶段一:AsyncTask的三个属性值和四个步骤
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 最近学到用AsyncTask来处理有关网络的操作.虽然代码看上去不是很复杂,但仍有很多地方有疑惑.所以研读了一下A ...
- Android必学——AsyncTask
第一章 AsyncTask的基本构成 为是么要异步任务 1)Android单线程模型 2)耗时操作放在非主线程中执行 AsyncTask为何而生 1)子线程中跟新UI 2)封装.简化异步操作 pub ...
- [Android Pro] AsyncTaskLoader vs AsyncTask
reference to : http://blog.csdn.net/a910626/article/details/45599133 我看了一下asyncTask是从LV3开始,AsyncTask ...
- AsyncTask异步上传文本到服务器
服务器代码:用于接收客户端信息 package ches; import java.io.IOException; import java.io.PrintWriter; import javax.s ...
- Android-异步任务-AsyncTask
什么是异步任务? 异步任务就是开一个子线程,然后让它去跑,它跑完了就会回来告诉你说,它跑完了,这是结果.这和Java中的回调差不多.我们在OKHttp中很长见到的 onSuccess() 和 onEr ...
- java 线程池ThreadPoolExecutor 如何与 AsyncTask() 组合使用。
转载请声明出处谢谢!http://www.cnblogs.com/linguanh/ 这里主要使用Executors中的4种静态创建线程池实例方法中的 newFixedThreadPool()来举例讲 ...
随机推荐
- SQL 代码创建表格以及CRUD
create table <表名>( <列名> <数据类型及长度> [not null], <列名> <数据类型及长度>, ... < ...
- Sublime Text : 创建工程
Sublime Text 可以很方便地管理多个工程.使用Sublime Text的Projects,可以将不同根目录的文件组织起来成为一个工程,而不用将所有的文件都放到一个根目录下面. 1. 创建工程 ...
- jquery 展开折叠效果
仅供参考 图片 jquery.js 自己处理 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"& ...
- 在php4下可用,简单的php数组转成json格式,
function array_to_json( $array ){ if( !is_array( $array ) ){ return false; } $ ...
- hdu 4024 二分
转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html 一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度 ...
- Android的onCreateOptionsMenu()创建菜单Menu详解(转)
Android一共有三种形式的菜单: 1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(s ...
- WITH AS短语,也叫做子查询部分(subquery factoring)
可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到. 作为提供数据的部分. 代码例子: with temp as (select ID, Type_Name, Type_ID ...
- Codeforces Round #267 (Div. 2) C. George and Job DP
C. George and Job The new ITone 6 has been released ...
- 重构实践——为了try-catch大兴排场
可能是我们共同的强迫症,不要说看到,就算想到太多的try-catch也很难接受. 于是,开始了一些尝试,这些尝试都算是思维的锻炼.场面的见识.经验的积累. Version1 —— 原始版本 一开始,在 ...
- HDU3341 Lost's revenge(AC自动机+DP)
题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...