`
baoweiwei
  • 浏览: 126686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中AsyncTask线程的使用

阅读更多
界面是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实现多线程计数

    本篇将详细讲解如何在Android中使用AsyncTask实现多线程计数,并展示如何将计数结果显示到UI。 首先,我们需要理解Android的线程模型。Android应用的主要工作线程是主线程,也称为UI线程。这个线程负责绘制和交互UI...

    android asyncTask线程应用

    2. **doInBackground()**:这个方法是异步执行的,它在后台线程中运行,可以执行耗时操作,如网络请求、数据库操作等。这个方法接收一个泛型参数,用于传递输入数据,并返回一个泛型结果。由于它在后台线程中运行,...

    android中AsyncTask的用法

    - **创建和执行**:Task的实例必须在UI线程中创建,`execute`方法也必须在UI线程中调用,否则可能导致运行时错误。 - **生命周期**:一个AsyncTask实例只能执行一次,多次调用`execute`会导致异常。如果需要多次执行...

    在Android中使用AsyncTask和Handler线程间交互的方式

    在Android中使用AsyncTask和Handler线程间交互的方式,详情参见博客:http://www.cnblogs.com/plokmju/p/android_AsyncTask.html和http://www.cnblogs.com/plokmju/p/android_Handler.html

    Android 线程AsyncTask逐步在list中加入条目

    params)`:在后台线程中执行,不直接与UI交互,适合进行耗时操作。 3. `onPostExecute(Result result)`:在后台任务完成后,在主线程中执行,可以安全地更新UI并显示结果。 在这个"Android 线程AsyncTask逐步在...

    Android AsyncTask用法和异步加载图片.rar

    本资料包主要讲解了如何使用`AsyncTask`进行异步加载图片,这对于在UI线程中保持流畅用户体验至关重要。 `AsyncTask`是Android SDK中的一个类,它为开发者提供了简单的多线程和回调功能。它的核心思想是将长时间...

    Android中AsyncTask的入门使用学习指南

    - **生命周期问题**:如果在Activity中使用AsyncTask,但Activity被销毁(如屏幕旋转),AsyncTask可能会继续执行,导致错误的结果。可以考虑在Activity的`onSaveInstanceState()`保存AsyncTask的状态,或在`...

    android线程 Handler Message Queue AsyncTask线程模型 线程交互 + 修改Button样式 示例 最终easy整合版

    为了防止UI阻塞,开发者需要在其他线程中执行耗时操作。主要有以下几种线程模型: - **Worker Thread**:开发者自定义的工作线程,用于处理耗时任务。 - **Intent Service**:为一次性后台任务设计,当任务完成后...

    Android AsyncTask多线程详解

    Android Asynctask 先小试牛刀,了解一下各个方法执行过程,关注博客http://himici.com/

    Android中AsyncTask的使用com.scott.async

    在Android中实现异步任务机制有两种方式,Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,...

    Android 使用AsyncTask异步更新UI界面

    本文将详细探讨如何在Android中使用`AsyncTask`来异步更新UI界面。 ### 一、AsyncTask概述 `AsyncTask`是Android SDK提供的一种轻量级的异步任务处理类,它简化了在后台线程中执行任务并在UI线程中更新结果的过程...

    AsyncTask 异步多线程加载Demo

    - `onPreExecute()`:在UI线程中执行,通常用于显示进度条或者初始化操作。 - `doInBackground(Params... params)`:在后台线程中运行,执行耗时操作。此方法中不能直接修改UI,可以调用`publishProgress(Progress...

    Android开发之AsyncTask机制及使用细节例子源码

    AsyncTask的使用和内部机制对于任何Android开发者来说都至关重要。让我们深入探讨这个话题。 首先,Android系统为了解决长时间运行的任务在主线程执行导致的UI冻结问题,提供了AsyncTask。AsyncTask分为三个基本...

    Android中异步类AsyncTask用法总结

    2. **doInBackground(Params...)**:在后台线程中执行,执行耗时的操作,不直接更新 UI。此方法可以调用 `publishProgress(Progress...)` 来通知主线程更新进度。 3. **onProgressUpdate(Progress...)**:在主线程...

    详解Android中用于线程处理的AsyncTask类的用法及

    AsyncTask 有四个主要的方法,每个方法都在特定的线程中运行: 1. **onPreExecute()**:在 UI 线程中运行,通常用于任务开始前的准备工作,如显示加载对话框。 2. **doInBackground(Params... params)**:在后台...

    Android AsyncTask 源码解析

    通过以上对 AsyncTask 的源码解析和使用方法的介绍,你应该对如何在 Android 应用中高效地使用异步任务有了更深入的理解。在实际开发中,正确理解和使用 AsyncTask 可以帮助我们编写出更加流畅、响应快速的应用程序...

    Android_AsyncTask使用

    - AsyncTask 必须在 UI 线程中创建实例,并且必须在 UI 线程中调用 `execute(Params...)` 方法。 - 不应该手动调用 `onPreExecute()`, `onPostExecute(Result)`, `doInBackground(Params...)`, `onProgressUpdate...

    Android中AsyncTask与handler用法实例分析

    3. **onProgressUpdate(Progress...)**:在UI线程中回调,用于更新进度信息,例如更新进度条。 4. **onPostExecute(Result)**:在后台任务完成后,由UI线程调用,将结果传递回主线程,适合更新UI。 使用AsyncTask时...

Global site tag (gtag.js) - Google Analytics