AsyncTask一个简单的全景感受

前言:虽然本人比较少用这个AsyncTask,但是因为项目中常常有用到,难免不了要维护,修修补补之类的工作。所以就在这里补一个吧!我热爱一目了然的代码,如下:

class DownloadTask extends AsyncTask {  

    @Override  
    protected void onPreExecute() {  
        progressDialog.show();  
    }  

    @Override  
    protected Boolean doInBackground(Void... params) {  
        try {  
            while (true) {  
                int downloadPercent = doDownload();  
                publishProgress(downloadPercent);  
                if (downloadPercent >= 100) {  
                    break;  
                }  
            }  
        } catch (Exception e) {  
            return false;  
        }  
        return true;  
    }  

    @Override  
    protected void onProgressUpdate(Integer... values) {  
        progressDialog.setMessage("当前下载进度:" + values[0] + "%");  
    }  

    @Override  
    protected void onPostExecute(Boolean result) {  
        progressDialog.dismiss();  
        if (result) {  
            Toast.makeText(context, "下载成功", Toast.LENGTH_SHORT).show();  
        } else {  
            Toast.makeText(context, "下载失败", Toast.LENGTH_SHORT).show();  
        }  
    }  
}

//使用方法
new DownloadTask().execute();


作者:Ruheng
链接:http://www.jianshu.com/p/817a34a5f200
來源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

感谢:
Android中的线程状态之AsyncTask详解
AsyncTask 只能执行一次
其他阅读:
基于最新版本的AsyncTask源码解读及AsyncTask的黑暗面

你可能感兴趣的:(AsyncTask一个简单的全景感受)