`

handler与asynctask对比

 
阅读更多
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);
		}
    	
    }
}

 

分享到:
评论

相关推荐

    Android Handler AsyncTask 异步加载

    **对比与选择:** - Handler适合处理周期性的、连续的任务,如定时刷新UI,或者需要在特定时刻执行的任务。 - AsyncTask更适合一次性、短时间的后台任务,它的使用更简单,但对多任务处理支持不足,且从Android P...

    AsyncTask 与Thread加Handler处理消息比较

    本篇文章将详细探讨两种常见的异步处理方式:`AsyncTask`和`Thread`配合`Handler`,并进行对比分析。 `AsyncTask`是Android SDK提供的一种轻量级的异步任务处理机制,它主要用于短时间的后台操作,如网络请求、数据...

    AsyncTask和Handler

    `AsyncTask`和`Handler`作为两种常见的异步处理机制,在Android开发中扮演着核心角色。 ### AsyncTask `AsyncTask`是一种轻量级的异步任务执行类,它主要用于执行后台计算并将结果返回到UI线程,而无需手动处理...

    异步任务Asynctask源码与反编译对比

    本篇文章将深入探讨AsyncTask的源码,并通过与反编译后的代码进行对比,揭示其内部工作机制。 首先,AsyncTask是一个抽象类,它提供了三个泛型参数:Params、Progress和Result。Params代表执行任务时需要的输入参数...

    Android开发工程师面试题之handler详解。android程序员,android开发面试资料,详解

    2. **Handler与AsyncTask的对比**: - **Handler**:适合长时间运行的任务,可以灵活控制消息的发送和处理时机。 - **AsyncTask**:适用于简单的异步任务,内部封装了线程池和消息机制,简化了异步任务的编写过程...

    Edu_AsyncTask.zip

    本项目"Edu_AsyncTask.zip"显然关注于利用`AsyncTask`来实现在网页加载图片的异步操作,并对比了`AsyncTask`与`Thread + Message + Handler`的经典异步模型。 首先,我们深入理解`AsyncTask`。`AsyncTask`包含三个...

    Android中的Handler的具体用法

    6. **`Handler`与`AsyncTask`、`IntentService`等的对比** - `AsyncTask`:轻量级的异步处理类,适用于短时间的后台操作,自动管理线程和回调到UI线程。 - `IntentService`:用于后台服务,当所有任务执行完毕后,...

    android AsyncTask详细介绍

    本文将深入探讨Android的AsyncTask及其与Handler的对比。 **AsyncTask详解** AsyncTask是Android SDK提供的一种轻量级的异步处理机制,特别适合于执行短时间的、与UI相关的后台任务。它的主要优点在于简化了UI更新...

    android AsyncTask介绍

    #### 一、AsyncTask与Handler对比 ##### 1.1 AsyncTask实现原理及优缺点 **实现原理**: - `AsyncTask` 是 Android 提供的一个轻量级异步类,允许开发者直接继承它并在其中实现异步操作。 - 它提供了一个简洁的...

    ListView动态加载数据分页

    对比两种方法,Handler+线程更灵活,适用于复杂的异步通信,而AsyncTask则更加简洁,适合简单的后台任务。实际开发中可以根据项目需求和性能要求选择合适的方式。 在`NewsList`这个例子中,我们可以假设这是一个...

    Handler.zip

    5. **`AsyncTask`与`Handler`对比**:`AsyncTask`是另一种Android提供的异步处理方式,相比`Handler`,它更易于使用,提供了更简单的接口,但只适合轻量级的异步操作。对于复杂或大量的后台任务,开发者通常选择`...

    android handler学习文档(多个)

    除了`Handler`,Android还有`AsyncTask`、`IntentService`、`ThreadPoolExecutor`等多种异步处理方式。开发者应根据实际需求选择最合适的方案。 10. **注意事项** 虽然`Handler`方便了线程间通信,但过度依赖可能...

    Android多线程及异步任务消息处理机制 一 Handler的使用

    `Handler`常与`AsyncTask`、`IntentService`、`Thread`等进行比较。`AsyncTask`更适用于短时、轻量级的任务,而`IntentService`适合长时间后台运行的服务。`Thread`直接创建线程,但需要手动管理消息传递。 总结,...

    安卓Android源码——HandlerLooper1.rar

    5. `Handler`与`AsyncTask`、`Runnable`、`IntentService`等其他异步处理方式的对比分析。 通过学习这部分源码和解析,开发者可以更好地理解和运用Android的消息处理机制,优化多线程编程,提高应用的性能和用户...

    android 异步刷新demo

    - **生命周期**:AsyncTask与Activity的生命周期绑定,当Activity销毁时,AsyncTask可能无法正常执行或回调,而Handler不受此限制。 - **执行顺序**:Handler可以保证消息的执行顺序,而AsyncTask的并发控制相对较弱...

    Android异步技术的对比实验及应用.pdf

    本文将对比分析Android中常见的三种异步处理方式:AsyncTask、ThreadPool(线程池)以及Thread+Handler,并通过实验研究它们在处理短时间内高并发场景时的性能表现。 首先,AsyncTask是Android提供的一种轻量级的...

    android 线程通信学习

    在Android应用开发中,线程通信是至关重要的一个环节,它涉及到UI线程与工作线程之间的数据交换和控制流程。本教程将深入探讨Android线程通信的基本概念、常用方法以及如何通过Demo来实践这些技术。 一、Android...

    Android异步刷新UI多种实现方案

    对比这三种方法,Asynctask适用于简单快速的任务,且易于使用;Handler+Thread更适合处理复杂逻辑和大量数据的传递;而TimerTask则擅长于定时任务。在实际开发中,应根据具体需求选择合适的方案。 此外,Android还...

    android应用开发

    对于更高级的主题,比如多线程(使用Handler、AsyncTask或Thread)、异步编程(使用LiveData、Coroutines)、依赖注入(如Dagger或Hilt)、MVVM架构模式,或者是动画和过渡效果,源码也可能提供了实践案例。...

Global site tag (gtag.js) - Google Analytics