本片介绍了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的用法
android程序利用android-async-http-1.4.5jar包进行的网络请求的完整代码,简单方便!
android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单,具体详细使用看官网:https://github.com/loopj/android-async-http
Springboot启用async异步调用Springboot启用async异步调用Springboot启用async异步调用
形象的描述了async与defer的区别,简单易懂的理解 async是异步执行,异步下载完毕后就会执行,不确保执行顺序,一定在 onload前,但不确定在 DOMContentLoaded事件的前或后 defer是延迟执行,在浏览器看起来的效果像...
1.async的简单使用 async function fn () { return 'abc' } console.log(fn()); // Promise { 'abc' } fn().then(res => { console.log(res); // "abc" }) async作为关键字放在函数前面,让同步的函数成为异步...
应该使用EA Async编写非阻塞异步代码,这些代码大量使用CompletableFutures或CompletionStage。 它通过在代码等待其他进程时释放工作线程来提高可伸缩性。 并通过使异步代码更简单和更具可读性来提高生产率。 ...
JavaScript中async,await的使用和方法 JS中 async函数和await 关键字 function hellworld() { return "您好!美好世界!"; } console.log(hellworld()); // 您好!美好世界! async function asyHellworld()...
async-ratelimiter:让速率限制变得简单,轻松,异步,基于ratelimiter实现
一种使用Resque异步调用方法的简单方法。 有一些宝石提供类似的功能。 但是,此实现提供了更具表现力的语法,使调用者可以控制调用。 安装 将此行添加到您的应用程序的Gemfile中: gem 'resque-async' 然后执行...
android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单
2017最新版本android-async-http-master Android异步框架,并附有简单的导入方法以及报错处理
使用async.now可以并行运行一组功能,或者使用async.next可以串行运行。 安装 npm install async-next 系列实例 var Async = require ( 'async-next' ) ; var async = new Async ( ) ; async . next ( function ...
请注意,async和await是针对coroutine的新语法,要使用新的语法,只需要做两步简单的替换: 把@asyncio.rotoutine替换为async; 把yield from替换为await。 async/await 是一种异步变成方法,还有两种你可能听过,...
C#5.0 中async 和await 两个关键字,这两个关键字简化了异步编程
本文就简单介绍一下 async-validator 的基本用法以及使用该库实现一个简单的有校验功能的 Form 组件。 1. async-validator 的基本用法 async-validator 的功能是校验数据是否合法,并且根据校验规则给出提示信息。 ...
做了个demo,主要用android-async-http第三方库中AsyncHttpClient来实现对服务器上传(1)简单键值对数据,(2)json数据以及(3)文件资源. 压缩包里包含客户端代码和服务端代码
打开本课程,你将会从编写简单的 `async/await` 函数开始,逐步学会如何结合 `promise` 和 `await` 关键字,如何定义不同类型的 `async` 函数,如何处理错误,如何让 `await` 代码串行或并行,如何在循环中正确使用 ...
android-async-http开源框架可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来也很简单 1.新建项目,去官网下载zip包,解压,打开releases文件,把里面最新的jar包,考入项目工程libs目录下,引入包。 ...
PHP异步并发访问mysql简单实现。 在实际的开发过程中,我们常常会遇到需要操作多张表,多个库的情况。有时因为一些限制我们不能进行连表(例如,异地数据库),所以只能用php串行访问后再在php里进行合并,有时还...