您的位置:首页 > 其它

深入AsyncTask

2016-09-06 16:21 260 查看
AsyncTask<Params, Progress, Result>

一、Params:指定输入参数的类型

例如:指定输入参数的类型为String



AsyncTask<String, Void, Void>-->

task().execute("First parameter","Second parameter","Etc.")-->

doInBackground(String... params)

二、Progress:指定发送进度更新需要的类型

例如:指定发送进度更新需要的类型为Integer



在后台进程中调用publishProgress,则onProgressUpdate在主线程被调用。

三、Result 指定AsyncTask返回结果类型

例如:指定AsyncTask返回结果类型为ArrayList<GalleryItem>

private class FetchItemsTask extends AsyncTask<Void,Void,ArrayList<GalleryItem>>{

        @Override

        protected ArrayList<GalleryItem> doInBackground(Void... params) {          

            return new FlickrFetchr().fetchItems();

        }

        @Override

        protected void onPostExecute(ArrayList<GalleryItem> galleryItems) {

            mItems=galleryItems;

            setupAdapter();

        }

    }

doInBackground把返回结果传递给了onPostExecute

四、清理AsyncTask

AsyncTask task=new
FetchItemsTask();

task.cancel(false):提前结束运行。优先考虑

task.cancel(true):终止doInBackground所在的线程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: