界面是Activity,如果把耗时的工作线程放在Activity的界面线程中做,那势必阻塞显示线程,开更多的线程也不合适,所以Android提供了AsyncTask线程来专门处理此事。
定义方法
class SoftCertHttpTask extends AsyncTask {
@Override
protected Object doInBackground(Object... params) {
// TODO Auto-generated method stub
try{
}catch(Exception e){
toast.setText("错误:"+e.getMessage());
toast.show();
}
return null;
}
@Override
protected void onPreExecute() {
// 任务启动,可以在这里显示一个对话框,这里简单处理
toast.setText("开始了!");
}
}
使用方法:
loginBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Toast用于向用户显示提示信息
toast = Toast.makeText(SoftCertUserLogin.this, "null", Toast.LENGTH_SHORT);
toast.setMargin(0.8f, 0.8f);
toast.setText("正在登录,请稍候");
toast.show();
SoftCertHttpTask ht=new SoftCertHttpTask();
ht.execute();
}});
需要说明,特地从android官网将标准AsyncTask贴于此处:
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
使用方法:
new DownloadFilesTask().execute(url1, url2, url3);
URL是参数类型,Long是执行函数的返回值在onPostExecute中处理,Integer是执行进度,在onProgressUpdate使用,以上函数若没有定义的变量则实效,onPreExecute是开始函数,无论定义参数与否都将执行。
分享到:
相关推荐
Android中AsyncTask实现多线程计数,UI主线程运行,启动另一个线程计数并在UI主线程上显示.
在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html
如果用现在做秒表,建议用asyncTask...
Android Asynctask 先小试牛刀,了解一下各个方法执行过程,关注博客http://himici.com/
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,...
一个ListView的小例子,一开始List中没有内容,通过一个AsyncTask逐步在List中加入条目,适合新手学习AsyncTask多线程,本人整理能运行,有详细的注解。
AsyncTask 异步多线程加载Demo
首先明确Android之所以有Handler和AsyncTask 都是为了不阻塞主线程(UI线程) 且UI的更新只能在主线程中完成 因此异步处理是不可避免的 Android为了降低这个开发难度 提供了AsyncTask AsyncTask就是一个封装过的...
12_Android 多线程AsyncTask详解
本文实例讲述了Android使用AsyncTask实现多线程下载的方法。分享给大家供大家参考,具体如下: public class MainActivity extends Activity implements OnClickListener { private Button btn1, btn2, btn3; ...
基于Android的AsyncTask异步任务, Android的AsyncTask将复杂的数据处理交由子线程, 将处理过程交由主线程处理
主要介绍了android使用AsyncTask实现多线程下载实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
详解Android 中AsyncTask 的使用 1、首先我们来看看AsyncTask 的介绍: Handler 和 AsyncTask 都是android 中用来实现异步任务处理的方式;其中: Handler 实例向 UI 线程发送消息,完成界面更新, 优点:...
Android是单线程模型,耗时的操作必须放在非主线程中执行,对此,我们需要使用多线程/线程池或者AsyncTask等来完成异步加载任务。 博客地址:http://blog.csdn.net/chenzheng8975/article/details/53893666
android 线程交互 进程讲解 Handler Message AsyncTask 线程模式
这时候我们就不能直接在UI线程中(主线程)中去完成这些“耗时操作”,因为,UI线程主要是用来更新界面UI,如果一次进行太多的任务处理,并且这些任务需要相当的时间来完成,就会造成UI线程堵塞,结果可能是应用无响应...
来处理,这样把任务放入工作线程中执行,不会占用主线程的时间片,所以主线程会及时响应用户的操作,如果使用new Thread来执行任务,那么如果需要中途取消任务执行或者需要返回任务执行结果,就需要我们自己维护很多...
Android异步线程使用Demo 异步线程AsyncTask使用方法
rxjava2 线程间流式处理 asynctask