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

asynctask 异步task

阅读更多

异步task是一个线程,但是可以和ui主线程交互。

他可以传入参数,参数传入doInBackground(Integer... params)。doInBackground(Integer... params)的返回值作为result,传递给onPostExecute作为参数。doInBackground(Integer... params)方法中调用了 publishProgress(p)方法,在此方法调用后就会直接触发 protected void onProgressUpdate(Integer... progress),p作为参数传递给progress。

 

实例:

 

 

import android.app.Activity; 

import android.os.AsyncTask; 

import android.os.Bundle; 

import android.util.Log; 

import android.widget.TextView; 

 

public class AsyncTaskTest extends Activity { 

    TextView tv; 

    final String TAG="AsyncTaskTest"; 

 

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 

        setContentView(R.layout.main); 

        tv = (TextView) findViewById(R.id.textView1); 

        new MyTask().execute(6, 12, 7); 

 

    } 

 

    class MyTask extends AsyncTask<Integer, Integer, Integer> { 

        //此方法是在调用doInBackground之前调用的,主要做一些准备工作,例如打开一个进度调对话框。

        @Override 

        protected void onPreExecute() { 

            super.onPreExecute(); 

            tv.setText("test");

            Log.e(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AsyncTaskTest", "onPreExecute()"); 

        } 

        //这里是要在后台线程中做的事情,只要这一个方法是后台线程的,其余的方法都是操作前台的,所有的操作          都用于前台。

        @Override 

        protected Integer doInBackground(Integer... params) { 

            Log.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AsyncTaskTest", "doInBackground()"); 

            int p = 0; 

            for (int index = 0; index < params.length; index++) { 

                int num = params[index]; 

                for (int j = 0; j < num; j++) { 

                    if (num - j <= 0) { 

                        break; 

                    } 

                    p++; 

                    publishProgress(p); 

                    try { 

                        Thread.sleep(500); 

                    } catch (InterruptedException e) { 

                        e.printStackTrace(); 

                    } 

                } 

            } 

            return p; 

        } 

 

        @Override 

        protected void onProgressUpdate(Integer... progress) { 

            Log.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AsyncTaskTest", "onProgressUpdate()"); 

            tv.append("\nProgress: " + progress[0]); 

        } 

       //doInBackground的return值是传入的result,是在doInBackground做完后执行的操作。

        @Override 

        protected void onPostExecute(Integer result) { 

            Log.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AsyncTaskTest", "onPostExecute()"); 

            tv.append("\nFinished. Result: " + result); 

        } 

 

        @Override 

        protected void onCancelled() { 

            super.onCancelled(); 

            Log.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>AsyncTaskTest", "onCancelled()"); 

        } 

    } 

 

}

分享到:
评论

相关推荐

    Asynctask异步加载的使用

    "Asynctask异步加载的使用"这一主题涵盖了如何利用Android SDK中的AsyncTask类来实现后台任务的执行,并在UI线程更新结果。以下是对这个知识点的详细讲解: AsyncTask是Android提供的一种轻量级的异步处理机制,...

    一个AsyncTask异步任务的操作实例

    在这个“一个AsyncTask异步任务的操作实例”中,我们将深入探讨AsyncTask的工作原理、使用方法以及如何在实际项目中应用。 1. **AsyncTask基本结构**: AsyncTask由三个泛型参数定义:`Params`, `Progress`, 和 `...

    AsyncTask异步下载图片

    AsyncTask是Android平台提供的一种轻量级的异步任务处理机制,主要用来在后台执行耗时操作,并在完成时更新UI。它适用于那些不需要长时间运行的任务,如网络请求、图片下载等,避免阻塞主线程,提升用户体验。下面将...

    AsyncTask异步线程下载图片示例

    `AsyncTask`是Android提供的一种轻量级的异步处理工具,特别适合用来进行短时间的后台操作,如网络请求、图片下载等。本示例将详细介绍如何使用`AsyncTask`来实现图片的异步下载。 首先,`AsyncTask`有三个泛型参数...

    AsyncTask异步加载使用

    AsyncTask是Android提供的一种轻量级的异步处理框架,非常适合用来进行短时间、小规模的后台任务。本教程将深入探讨AsyncTask的使用方法,帮助初学者更好地理解和应用。 AsyncTask主要包含三个泛型参数:Params, ...

    AsyncTask异步类下载图片案例

    An­droid 的 UI 线程主要负责处理用户的按键事件、触屏事件等。...但由于新线程不允许直接更新山 I 组件,为了解决这个问题,An­droid 提供了异步任务 (Async­Task) 的方式实现异步线程的操作。

    Android AsyncTask(异步) 简单样例

    private class MyTask extends AsyncTask, Void, String&gt; { @Override protected void onPreExecute() { // 显示进度对话框或更新UI } @Override protected String doInBackground(String... urls) { try...

    Android中异步类AsyncTask用法总结

    AsyncTask 是 Android 平台上一种轻量级的异步处理机制,主要用于在后台执行耗时操作,同时确保结果能够在主线程中安全地更新 UI。它简化了多线程编程,尤其是与用户界面交互的需求。 首先,AsyncTask 包含三个泛型...

    异步操作类AsyncTask

    `AsyncTask`是Android SDK提供的一种轻量级的异步处理机制,主要用于简化短时间的后台操作。这篇博文将深入探讨`AsyncTask`的工作原理和使用方法。 `AsyncTask`主要由四个关键部分组成:`onPreExecute()`、`...

    异步任务AsyncTask

    AsyncTask是Android开发中用于处理轻量级异步任务的重要工具。它允许开发者在后台线程执行计算密集型操作,并在UI线程更新结果,从而避免阻塞主线程,提高应用的响应速度和用户体验。在Android系统中,由于主线程...

    Android带进度条的文件上传示例(使用AsyncTask异步任务)

    AsyncTask是为了简化异步任务而设计的,它能够帮助开发者在后台执行耗时操作,同时更新UI线程,避免了直接在主线程中进行耗时操作导致的ANR(Application Not Responding)错误。在本文中,我们将详细讨论如何在...

    Android 异步任务AsyncTask

    在Android应用开发中,异步任务(AsyncTask)是一个强大的工具,用于在后台线程执行耗时操作,然后在UI线程更新结果,避免了主线程(UI线程)因执行长时间运算而阻塞的问题。Android SDK提供的AsyncTask类使得开发者...

    AsyncTask下载大文件并可以取消异步任务

    然而,对于Android的新版本(API级别23及以上),`AsyncTask`的性能和并发性有所下降,推荐使用`Executor`、`LiveData`或`ViewModel`结合`Coroutine`等更现代的异步处理方式。但`AsyncTask`对于理解Android多线程...

    Android异步任务AsyncTask的简单DEMO

    AsyncTask是Android SDK提供的一种轻量级异步处理框架,适用于简单且快速的任务。下面将详细解释AsyncTask的工作原理和使用方法。 **AsyncTask概述** AsyncTask是Android中的一个抽象类,用于在后台线程执行任务,...

    Android学习笔记(三二):线程:后台异步任务AsyncTask_IT168文库

    class MyTask extends AsyncTask, Integer, String&gt; {} ``` 这里,`String`是传递给后台任务的方法参数类型,`Integer`是进度更新的类型,而`String`则是最终结果的类型。 #### 二、AsyncTask的基本使用流程 使用...

    异步任务Asynctask源码与反编译对比

    在Android开发中,异步任务(AsyncTask)是一种常见的用于执行后台操作的工具,它能够帮助开发者在主线程中更新UI,避免了由于长时间运行任务而导致的ANR(Application Not Responding)错误。本篇文章将深入探讨...

    C#_5.0使用Task_Await_Async实现异步编程

    在C# 5.0及更高版本中,`Task`, `Await` 和 `Async` 关键字是异步编程的核心工具,它们极大地简化了多线程和非阻塞操作的处理,尤其对于UI应用程序如WinForm,能确保用户体验的流畅性。本示例通过一个简单的WinForm...

    Android AsyncTask 源码解析

    public class MyTask extends AsyncTask, Integer, String&gt; { @Override protected String doInBackground(String... params) { // 在后台线程执行耗时操作 return "Result"; } @Override protected void ...

Global site tag (gtag.js) - Google Analytics