// 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的基本使用的更多相关文章

  1. Android 旋转屏幕--处理Activity与AsyncTask的最佳解决方案

    一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务, ...

  2. Android笔记——AsyncTask介绍

    AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...

  3. Android线程管理之AsyncTask异步任务

    前言: 前面几篇文章主要学习了线程以及线程池的创建与使用,今天来学习一下AsyncTask异步任务,学习下AsyncTask到底解决了什么问题?然而它有什么弊端?正所谓知己知彼百战百胜嘛! 线程管理相 ...

  4. Android中使用AsyncTask实现文件下载以及进度更新提示

    Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单.相对Handler来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和 ...

  5. 阶段一:AsyncTask的三个属性值和四个步骤

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 最近学到用AsyncTask来处理有关网络的操作.虽然代码看上去不是很复杂,但仍有很多地方有疑惑.所以研读了一下A ...

  6. Android必学——AsyncTask

    第一章  AsyncTask的基本构成 为是么要异步任务 1)Android单线程模型 2)耗时操作放在非主线程中执行 AsyncTask为何而生 1)子线程中跟新UI 2)封装.简化异步操作 pub ...

  7. [Android Pro] AsyncTaskLoader vs AsyncTask

    reference to : http://blog.csdn.net/a910626/article/details/45599133 我看了一下asyncTask是从LV3开始,AsyncTask ...

  8. AsyncTask异步上传文本到服务器

    服务器代码:用于接收客户端信息 package ches; import java.io.IOException; import java.io.PrintWriter; import javax.s ...

  9. Android-异步任务-AsyncTask

    什么是异步任务? 异步任务就是开一个子线程,然后让它去跑,它跑完了就会回来告诉你说,它跑完了,这是结果.这和Java中的回调差不多.我们在OKHttp中很长见到的 onSuccess() 和 onEr ...

  10. java 线程池ThreadPoolExecutor 如何与 AsyncTask() 组合使用。

    转载请声明出处谢谢!http://www.cnblogs.com/linguanh/ 这里主要使用Executors中的4种静态创建线程池实例方法中的 newFixedThreadPool()来举例讲 ...

随机推荐

  1. SQL 代码创建表格以及CRUD

    create table <表名>( <列名> <数据类型及长度> [not null], <列名> <数据类型及长度>, ... < ...

  2. Sublime Text : 创建工程

    Sublime Text 可以很方便地管理多个工程.使用Sublime Text的Projects,可以将不同根目录的文件组织起来成为一个工程,而不用将所有的文件都放到一个根目录下面. 1. 创建工程 ...

  3. jquery 展开折叠效果

    仅供参考  图片 jquery.js 自己处理 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"& ...

  4. 在php4下可用,简单的php数组转成json格式,

    function array_to_json( $array ){     if( !is_array( $array ) ){         return false;     }       $ ...

  5. hdu 4024 二分

    转自:http://www.cnblogs.com/kuangbin/archive/2012/08/23/2653003.html   一种是直接根据公式计算的,另外一种是二分算出来的.两种方法速度 ...

  6. Android的onCreateOptionsMenu()创建菜单Menu详解(转)

    Android一共有三种形式的菜单:            1.选项菜单(optinosMenu)            2.上下文菜单(ContextMenu)            3.子菜单(s ...

  7. WITH AS短语,也叫做子查询部分(subquery factoring)

    可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到. 作为提供数据的部分. 代码例子: with temp as (select ID, Type_Name, Type_ID ...

  8. Codeforces Round #267 (Div. 2) C. George and Job DP

                                                  C. George and Job   The new ITone 6 has been released ...

  9. 重构实践——为了try-catch大兴排场

    可能是我们共同的强迫症,不要说看到,就算想到太多的try-catch也很难接受. 于是,开始了一些尝试,这些尝试都算是思维的锻炼.场面的见识.经验的积累. Version1 —— 原始版本 一开始,在 ...

  10. HDU3341 Lost's revenge(AC自动机+DP)

    题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...