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传入的参数。
相关推荐
而 **RxAsyncTask** 是基于RxJava的一种封装,特别针对Android平台设计,旨在简化传统的AsyncTask使用过程。 在Android开发中,AsyncTask是一个常见的用于执行后台任务并更新UI的工具类,但它有一些限制,如不能很...
在C# 5.0及更高版本中,`Task`, `Await` 和 `Async` 关键字是异步编程的核心工具,它们极大地简化了多线程和非阻塞操作的处理,尤其对于UI应用程序如WinForm,能确保用户体验的流畅性。本示例通过一个简单的WinForm...
`ETTask` 可能是某个特定项目或者库中对`AsyncTask`的一种扩展或定制,特别是其`Async`部分,它被描述为一个单线程的Task,这意味着它可能更加专注于线程管理和任务执行的顺序。 `AsyncTask` 的核心在于它的三个...
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` 是一个基于Python的Django框架扩展,它允许开发者在Django应用中实现异步任务处理。这个工具的核心目的是提高Web应用的性能和响应速度,尤其是在处理耗时操作(如大数据处理、发送邮件、网络...
async-task-impl-6.11.0.jar
async-task-impl-6.10.0.jar
async-task-impl-6.11.0-sources.jar
async-task-impl-6.10.0-sources.jar
async-task-demo-6.10.0-sources.jar
`async`关键字用于标记一个方法为异步方法,它返回一个`Task`或`Task<T>`对象,表示异步操作的状态。`await`关键字用于挂起异步方法的执行,直到等待的任务完成。当`await`后的任务抛出异常时,这个异常会在调用链中...
在C#Demo(Thread_Async_Task)中,你可能会看到以下示例: 1. 线程示例:创建并启动线程,可能包括传递参数,设置优先级,以及控制线程生命周期。 2. 任务示例:使用`Task.Run`执行异步操作,或者创建具有依赖的任务...
使用async方法要定义async Task或者async Task<T> 最好不要定义async void方法来调用,async void是处理程序等,总结结论就是要使用async Task或者async Task 使用asyn方法,可以用同步的格式,执行异步的代码,如下...
static async Task<int> LongRunningOperation() { // 模拟耗时操作,实际应用中可能是数据库查询、文件读写等 await Task.Delay(2000); return 42; // 返回一个结果 } } ``` 在这个例子中,`Main`方法调用...
网上async with和async for的中文资料比较少,我把PEP 492中的官方陈述翻译一下。 异步上下文管理器”async with” 异步上下文管理器指的是在enter和exit方法处能够暂停执行的上下文管理器。 为了实现这样的功能,...
`await`关键字后面通常跟一个返回`Task`或`Task<T>`的表达式,这个表达式代表了异步操作。当`await`遇到一个未完成的任务时,它会让当前方法返回一个未完成的`Task`,并释放控制权,使得调用者可以继续执行其他任务...
本资料包“android-clean-http-async-task.7z”正是针对这一主题,旨在提供一种整洁的解决方案。 首先,我们要理解Android中的AsyncTask。AsyncTask是一个轻量级的后台执行框架,它允许开发者在后台线程中执行耗时...
`async`关键字标记了一个方法,表明这个方法是异步的,它会返回一个`Task`或者`Task<T>`类型的实例。而`await`关键字则用于等待异步操作的完成,但不会阻塞当前线程。当`await`遇到时,控制权会立即返回给调用者,...
`async`修饰符用于定义一个异步方法,这个方法会返回一个`Task`或`Task<T>`类型的值。当标记为`async`的方法执行时,它不会立即运行到结束,而是会在遇到第一个`await`关键字时返回一个未完成的任务。这个返回的任务...