package async_demo; import com.exercise.R; import com.exercise.R.layout; import com.exercise.R.menu; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.ProgressBar; import android.widget.TextView; public class AsyncTask_Handler extends Activity { TextView asynctask_textView; TextView handler_textview; MyHandler handler; @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(); } }); handler_textview=(TextView) findViewById(R.id.handler_textview); handler_textview.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub handler=new MyHandler(); MyThread mt=new MyThread(); new Thread(mt).start(); }}); } @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>{ @Override protected String doInBackground(String... params) { // TODO Auto-generated method stub String text="AsynacTask_Change"; return text; } @Override protected void onCancelled(String result) { // TODO Auto-generated method stub super.onCancelled(result); } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub asynctask_textView.setText(result); //在asynctask中修改UI } @Override protected void onProgressUpdate(ProgressBar... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } } class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if (msg.what==1010){ Bundle b=msg.getData(); String textString =b.getString("text"); AsyncTask_Handler.this.handler_textview.setText(textString); //在handler中修改ui }; } } class MyThread implements Runnable{ @Override public void run() { // TODO Auto-generated method stub Message msg=new Message(); Bundle bundle=new Bundle(); bundle.putString("text","Change" ); msg.setData(bundle); msg.what=1010; AsyncTask_Handler.this.handler.sendMessage(msg); } } }
相关推荐
**对比与选择:** - Handler适合处理周期性的、连续的任务,如定时刷新UI,或者需要在特定时刻执行的任务。 - AsyncTask更适合一次性、短时间的后台任务,它的使用更简单,但对多任务处理支持不足,且从Android P...
本篇文章将详细探讨两种常见的异步处理方式:`AsyncTask`和`Thread`配合`Handler`,并进行对比分析。 `AsyncTask`是Android SDK提供的一种轻量级的异步任务处理机制,它主要用于短时间的后台操作,如网络请求、数据...
`AsyncTask`和`Handler`作为两种常见的异步处理机制,在Android开发中扮演着核心角色。 ### AsyncTask `AsyncTask`是一种轻量级的异步任务执行类,它主要用于执行后台计算并将结果返回到UI线程,而无需手动处理...
本篇文章将深入探讨AsyncTask的源码,并通过与反编译后的代码进行对比,揭示其内部工作机制。 首先,AsyncTask是一个抽象类,它提供了三个泛型参数:Params、Progress和Result。Params代表执行任务时需要的输入参数...
2. **Handler与AsyncTask的对比**: - **Handler**:适合长时间运行的任务,可以灵活控制消息的发送和处理时机。 - **AsyncTask**:适用于简单的异步任务,内部封装了线程池和消息机制,简化了异步任务的编写过程...
本项目"Edu_AsyncTask.zip"显然关注于利用`AsyncTask`来实现在网页加载图片的异步操作,并对比了`AsyncTask`与`Thread + Message + Handler`的经典异步模型。 首先,我们深入理解`AsyncTask`。`AsyncTask`包含三个...
6. **`Handler`与`AsyncTask`、`IntentService`等的对比** - `AsyncTask`:轻量级的异步处理类,适用于短时间的后台操作,自动管理线程和回调到UI线程。 - `IntentService`:用于后台服务,当所有任务执行完毕后,...
本文将深入探讨Android的AsyncTask及其与Handler的对比。 **AsyncTask详解** AsyncTask是Android SDK提供的一种轻量级的异步处理机制,特别适合于执行短时间的、与UI相关的后台任务。它的主要优点在于简化了UI更新...
#### 一、AsyncTask与Handler对比 ##### 1.1 AsyncTask实现原理及优缺点 **实现原理**: - `AsyncTask` 是 Android 提供的一个轻量级异步类,允许开发者直接继承它并在其中实现异步操作。 - 它提供了一个简洁的...
对比两种方法,Handler+线程更灵活,适用于复杂的异步通信,而AsyncTask则更加简洁,适合简单的后台任务。实际开发中可以根据项目需求和性能要求选择合适的方式。 在`NewsList`这个例子中,我们可以假设这是一个...
5. **`AsyncTask`与`Handler`对比**:`AsyncTask`是另一种Android提供的异步处理方式,相比`Handler`,它更易于使用,提供了更简单的接口,但只适合轻量级的异步操作。对于复杂或大量的后台任务,开发者通常选择`...
除了`Handler`,Android还有`AsyncTask`、`IntentService`、`ThreadPoolExecutor`等多种异步处理方式。开发者应根据实际需求选择最合适的方案。 10. **注意事项** 虽然`Handler`方便了线程间通信,但过度依赖可能...
`Handler`常与`AsyncTask`、`IntentService`、`Thread`等进行比较。`AsyncTask`更适用于短时、轻量级的任务,而`IntentService`适合长时间后台运行的服务。`Thread`直接创建线程,但需要手动管理消息传递。 总结,...
5. `Handler`与`AsyncTask`、`Runnable`、`IntentService`等其他异步处理方式的对比分析。 通过学习这部分源码和解析,开发者可以更好地理解和运用Android的消息处理机制,优化多线程编程,提高应用的性能和用户...
- **生命周期**:AsyncTask与Activity的生命周期绑定,当Activity销毁时,AsyncTask可能无法正常执行或回调,而Handler不受此限制。 - **执行顺序**:Handler可以保证消息的执行顺序,而AsyncTask的并发控制相对较弱...
本文将对比分析Android中常见的三种异步处理方式:AsyncTask、ThreadPool(线程池)以及Thread+Handler,并通过实验研究它们在处理短时间内高并发场景时的性能表现。 首先,AsyncTask是Android提供的一种轻量级的...
在Android应用开发中,线程通信是至关重要的一个环节,它涉及到UI线程与工作线程之间的数据交换和控制流程。本教程将深入探讨Android线程通信的基本概念、常用方法以及如何通过Demo来实践这些技术。 一、Android...
对比这三种方法,Asynctask适用于简单快速的任务,且易于使用;Handler+Thread更适合处理复杂逻辑和大量数据的传递;而TimerTask则擅长于定时任务。在实际开发中,应根据具体需求选择合适的方案。 此外,Android还...
对于更高级的主题,比如多线程(使用Handler、AsyncTask或Thread)、异步编程(使用LiveData、Coroutines)、依赖注入(如Dagger或Hilt)、MVVM架构模式,或者是动画和过渡效果,源码也可能提供了实践案例。...