AsyncTask的使用

(借鉴自:http://blog.csdn.net/liuhe688/article/details/6532519)


Handler的代码比较臃肿,而且在多任务时逻辑也不太清晰,所以采用AsyncTask。


public abstract class AsyncTask<Params, Progress, Result> {
}

Params,启动任务时传入的参数

Progress,后台任务完成的进度

Result,后台计算的结果类型


private class MyTask extends AsyncTask<String, Integer, String> {
    //onPreExecute方法用于在执行后台任务前做一些UI操作
    @Override
    protected void onPreExecute() {
    }

    //doInBackground方法内部执行后台任务,不可在此方法内修改UI
    @Override
    protected String doInBackground(String... params) {
        //调用publishProgress公布进度,最后onProgressUpdate方法将被执行,更新进度相关的UI
        publishProgress((int) ((count / (float) total) * 100));
        return null;
    }

    //onProgressUpdate方法用于更新进度信息
    @Override
    protected void onProgressUpdate(Integer... progresses) {
        progressBar.setProgress(progresses[0]);
        textView.setText("loading..." + progresses[0] + "%");
    }

    //onPostExecute方法用于在执行完后台任务后更新UI,显示结果
    @Override
    protected void onPostExecute(String result) {
        textView.setText(result);
    }

    //onCancelled方法用于在取消执行中的任务时更改UI
    @Override
    protected void onCancelled() {
        textView.setText("cancelled");
        progressBar.setProgress(0);
    }
}

调用

mTask = new MyTask();
mTask.execute("http://www.baidu.com");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值