`

async task 个人初解

阅读更多

 

public class AsyncTaskTask extends Activity {
   TextView asynctask_textView;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.async_task);
  asynctask_textView=(TextView) findViewById(R.id.asynctask_textview);
  asynctask_textView.setOnClickListener(new OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    Asynctask task=new Asynctask();
    task.execute();
   }
   
  });
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.async_task, menu);
  return true;
 }
    class Asynctask extends AsyncTask<String, ProgressBar, String>{

//第一个String定义了task.execute()参数的数据类型,对应doInBackground(String... params)中的params。

//第二个ProgressBar指定进度显示条即onProgressUpdate(......)的类型。

//第三个String定义返回结果类型,即doinbackground(..)中的text,onPostExecute(...)中result的类型

  @Override
  protected String doInBackground(String... params) {//运行,此方法中不可对ui进行修改
   // TODO Auto-generated method stub
   String text="change";
   return text;
  }

  @Override
  protected void onCancelled(String result) {//取消
   // TODO Auto-generated method stub
   super.onCancelled(result);
  }

  @Override
  protected void onPostExecute(String result) {//接受doinbackground的结果并显示,可对ui修改。

//result的值为return text。
   // TODO Auto-generated method stub
   asynctask_textView.setText(result);//修改textview内容为"change"
  }

  @Override
  protected void onProgressUpdate(ProgressBar... values) {//doinbackground进度显示,无关痛痒
   // TODO Auto-generated method stub
   super.onProgressUpdate(values);
  }

     
    }
}

为了正确的使用AsyncTask类,以下是几条必须遵守的准则:
  1) Task的实例必须在UI thread中创建
  2) execute方法必须在UI thread中调用
  3) 不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法
  4) 该task只能被执行一次,否则多次调用时将会出现异常
      doInBackground方法和onPostExecute的参数必须对应,这两个参数在AsyncTask声明的泛型参数列表中指定,第一个为doInBackground接受的参数,第二个为显示进度的参数,第第三个为doInBackground返回和onPostExecute传入的参数。

详细用法 http://blog.csdn.net/liuhe688/article/details/6532519?ADUIN=527892596&ADSESSION=1388639015&ADTAG=CLIENT.QQ.5275_.0&ADPUBNO=26274

分享到:
评论

相关推荐

    博客资源:RxJava封装异步任务RxAsyncTask

    而 **RxAsyncTask** 是基于RxJava的一种封装,特别针对Android平台设计,旨在简化传统的AsyncTask使用过程。 在Android开发中,AsyncTask是一个常见的用于执行后台任务并更新UI的工具类,但它有一些限制,如不能很...

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

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

    Async_task_ETTask_async_

    `ETTask` 可能是某个特定项目或者库中对`AsyncTask`的一种扩展或定制,特别是其`Async`部分,它被描述为一个单线程的Task,这意味着它可能更加专注于线程管理和任务执行的顺序。 `AsyncTask` 的核心在于它的三个...

    WPAsyncTask.zip

    class JPB_Async_Task extends WP_Async_Task {  protected $action = 'save_post';  /**  * Prepare data for the asynchronous request  *  * @throws Exception If for any reason ...

    django-async-task

    `django-async-task` 是一个基于Python的Django框架扩展,它允许开发者在Django应用中实现异步任务处理。这个工具的核心目的是提高Web应用的性能和响应速度,尤其是在处理耗时操作(如大数据处理、发送邮件、网络...

    async-task-impl-6.11.0.jar

    async-task-impl-6.11.0.jar

    async-task-impl-6.10.0.jar

    async-task-impl-6.10.0.jar

    async-task-impl-6.11.0-sources.jar

    async-task-impl-6.11.0-sources.jar

    async-task-impl-6.10.0-sources.jar

    async-task-impl-6.10.0-sources.jar

    async-task-demo-6.10.0-sources.jar

    async-task-demo-6.10.0-sources.jar

    async await 异常处理示例代码

    `async`关键字用于标记一个方法为异步方法,它返回一个`Task`或`Task&lt;T&gt;`对象,表示异步操作的状态。`await`关键字用于挂起异步方法的执行,直到等待的任务完成。当`await`后的任务抛出异常时,这个异常会在调用链中...

    C#Demo For Thread_Task_Async

    在C#Demo(Thread_Async_Task)中,你可能会看到以下示例: 1. 线程示例:创建并启动线程,可能包括传递参数,设置优先级,以及控制线程生命周期。 2. 任务示例:使用`Task.Run`执行异步操作,或者创建具有依赖的任务...

    C#关键字async/await用法

    使用async方法要定义async Task或者async Task&lt;T&gt; 最好不要定义async void方法来调用,async void是处理程序等,总结结论就是要使用async Task或者async Task 使用asyn方法,可以用同步的格式,执行异步的代码,如下...

    async和await使用简单实例

    static async Task&lt;int&gt; LongRunningOperation() { // 模拟耗时操作,实际应用中可能是数据库查询、文件读写等 await Task.Delay(2000); return 42; // 返回一个结果 } } ``` 在这个例子中,`Main`方法调用...

    python async with和async for的使用

    网上async with和async for的中文资料比较少,我把PEP 492中的官方陈述翻译一下。 异步上下文管理器”async with” 异步上下文管理器指的是在enter和exit方法处能够暂停执行的上下文管理器。 为了实现这样的功能,...

    Async in C# 5.0

    `await`关键字后面通常跟一个返回`Task`或`Task&lt;T&gt;`的表达式,这个表达式代表了异步操作。当`await`遇到一个未完成的任务时,它会让当前方法返回一个未完成的`Task`,并释放控制权,使得调用者可以继续执行其他任务...

    android-clean-http-async-task.7z

    本资料包“android-clean-http-async-task.7z”正是针对这一主题,旨在提供一种整洁的解决方案。 首先,我们要理解Android中的AsyncTask。AsyncTask是一个轻量级的后台执行框架,它允许开发者在后台线程中执行耗时...

    后台耗时程序处理 async_await 异步程序

    `async`关键字标记了一个方法,表明这个方法是异步的,它会返回一个`Task`或者`Task&lt;T&gt;`类型的实例。而`await`关键字则用于等待异步操作的完成,但不会阻塞当前线程。当`await`遇到时,控制权会立即返回给调用者,...

    使用Async和Await进行异步编程

    `async`修饰符用于定义一个异步方法,这个方法会返回一个`Task`或`Task&lt;T&gt;`类型的值。当标记为`async`的方法执行时,它不会立即运行到结束,而是会在遇到第一个`await`关键字时返回一个未完成的任务。这个返回的任务...

Global site tag (gtag.js) - Google Analytics