`
bcyy
  • 浏览: 1829501 次
文章分类
社区版块
存档分类
最新评论

Async 的简单使用

 
阅读更多

本片介绍了AsyncTask的使用,实现异步执行.


首先我们先做一个简单布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/Text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />


    <Button
        android:id="@+id/btnCancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cancel" />


</LinearLayout>

然后我们继续做一个简单的activity,在activity 中编写mAsyncTask类,他继承子AsyncTask

下面我们看代码:


package com.zb;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class AnytaskDemoActivity extends Activity {
	private TextView textView;
	private Button button;
	private mAsyncTask task;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        textView=(TextView) findViewById(R.id.Text);
        textView.setText("准备");
        
        button=(Button) findViewById(R.id.btnCancel);
        button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				task.cancel(true);
			}
		});
        
        task=new mAsyncTask();
        task.execute("haha");
	   }
    
    
    /**
     * 参数1 向后台任务执行方法传递的参数
     * 参数2 后台任务执行过程中,UI线程处理的中间状态,一般是UI处理中传递的参数类型
     * 参数3 后台任务执行完返回时的参数类型
     * @author zhangbo
     *
     */
   private class mAsyncTask extends AsyncTask<String, String, String>{

    	/**
    	 * 执行任务
    	 */
		@Override
		protected String/*参数3*/ doInBackground(String... params/*参数1*/) {
			String per=params[0];
			for(int i=0;i<5;i++){
				publishProgress(per+i);
				SystemClock.sleep(1000);
			}
			
			return "结束";
		}
    	
		/**
		 * 任务完成
		 */
		@Override
		protected void onPostExecute(String result/*参数3*/) {
			super.onPostExecute(result);
			Toast.makeText(AnytaskDemoActivity.this,result, Toast.LENGTH_SHORT).show();
			textView.setText(result);
		}
		
		
		/**
		 * 开始任务
		 */
		@Override
		protected void onPreExecute() {
			super.onPreExecute();
			Toast.makeText(AnytaskDemoActivity.this,"开始执行任务", Toast.LENGTH_SHORT).show();
		}
		
		/**
		 * 任务执行时的更新
		 */
		@Override
		protected void onProgressUpdate(String... values/*参数2*/) {
			super.onProgressUpdate(values);
			textView.setText(values[0]);
		}
		
		
		/**
		 * 任务取消
		 */
		@Override
		protected void onCancelled() {
			super.onCancelled();
			Toast.makeText(AnytaskDemoActivity.this,"cancelled", Toast.LENGTH_SHORT).show();
		}
		
    }

}

这样我们就实现了异步更新的过程.

1个asyncTask只能使用一次,当你想再次使用的话,只好再new一个任务,否则要报异常的。



分享到:
评论

相关推荐

    async和await使用简单实例

    网上摘抄的简单实例,可能网上找得到。我这里就直接把代码弄出来 大家单步执行,既能知道async和await的用法

    利用Async框架的网络请求

    android程序利用android-async-http-1.4.5jar包进行的网络请求的完整代码,简单方便!

    android-async-http

    android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单,具体详细使用看官网:https://github.com/loopj/android-async-http

    Springboot启用async异步调用

    Springboot启用async异步调用Springboot启用async异步调用Springboot启用async异步调用

    async与defer的区别

    形象的描述了async与defer的区别,简单易懂的理解 async是异步执行,异步下载完毕后就会执行,不确保执行顺序,一定在 onload前,但不确定在 DOMContentLoaded事件的前或后 defer是延迟执行,在浏览器看起来的效果像...

    ES6 async、await的基本使用方法示例

    1.async的简单使用 async function fn () { return 'abc' } console.log(fn()); // Promise { 'abc' } fn().then(res =&gt; { console.log(res); // "abc" }) async作为关键字放在函数前面,让同步的函数成为异步...

    ea-async:EA Async在JVM中实现async-await方法

    应该使用EA Async编写非阻塞异步代码,这些代码大量使用CompletableFutures或CompletionStage。 它通过在代码等待其他进程时释放工作线程来提高可伸缩性。 并通过使异步代码更简单和更具可读性来提高生产率。 ...

    【JavaScript源代码】JavaScript中async,await的使用和方法.docx

    JavaScript中async,await的使用和方法  JS中 async函数和await 关键字 function hellworld() { return "您好!美好世界!"; } console.log(hellworld()); // 您好!美好世界! async function asyHellworld()...

    Node.js-async-ratelimiter让速率限制变得简单轻松异步基于ratelimiter实现

    async-ratelimiter:让速率限制变得简单,轻松,异步,基于ratelimiter实现

    resque-async:使用resque异步调用方法的简单方法

    一种使用Resque异步调用方法的简单方法。 有一些宝石提供类似的功能。 但是,此实现提供了更具表现力的语法,使调用者可以控制调用。 安装 将此行添加到您的应用程序的Gemfile中: gem 'resque-async' 然后执行...

    android-async-http-master

    android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单

    android-async-http-master.zip

    2017最新版本android-async-http-master Android异步框架,并附有简单的导入方法以及报错处理

    async-next:简单的回调管理器

    使用async.now可以并行运行一组功能,或者使用async.next可以串行运行。 安装 npm install async-next 系列实例 var Async = require ( 'async-next' ) ; var async = new Async ( ) ; async . next ( function ...

    Python从使用线程到使用async/await的深入讲解

    请注意,async和await是针对coroutine的新语法,要使用新的语法,只需要做两步简单的替换: 把@asyncio.rotoutine替换为async; 把yield from替换为await。 async/await 是一种异步变成方法,还有两种你可能听过,...

    C#_5.0新特性:Async和Await使异步编程更简单.pdf

    C#5.0 中async 和await 两个关键字,这两个关键字简化了异步编程

    使用async-validator编写Form组件的方法

    本文就简单介绍一下 async-validator 的基本用法以及使用该库实现一个简单的有校验功能的 Form 组件。 1. async-validator 的基本用法 async-validator 的功能是校验数据是否合法,并且根据校验规则给出提示信息。 ...

    android-async-http安卓客户端编码和服务端编码

    做了个demo,主要用android-async-http第三方库中AsyncHttpClient来实现对服务器上传(1)简单键值对数据,(2)json数据以及(3)文件资源. 压缩包里包含客户端代码和服务端代码

    javascript之async-await简明教程

    打开本课程,你将会从编写简单的 `async/await` 函数开始,逐步学会如何结合 `promise` 和 `await` 关键字,如何定义不同类型的 `async` 函数,如何处理错误,如何让 `await` 代码串行或并行,如何在循环中正确使用 ...

    android-async-http-master第三方库

    android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单 1.新建项目,去官网下载zip包,解压,打开releases文件,把里面最新的jar包,考入项目工程libs目录下,引入包。 ...

    异步mysql客户端async-mysql-php.zip

    PHP异步并发访问mysql简单实现。 在实际的开发过程中,我们常常会遇到需要操作多张表,多个库的情况。有时因为一些限制我们不能进行连表(例如,异地数据库),所以只能用php串行访问后再在php里进行合并,有时还...

Global site tag (gtag.js) - Google Analytics