[有事没事记录一点]Android中,Handler的用法

本文深入讲解了Android中Handler的作用及其实现方式。介绍了如何利用Handler在子线程完成耗时任务后更新UI,并通过示例代码展示了具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Handler是Android中消息队列的总句柄(不知道怎么说)。

Handler的主要作用是当线程(非UI线程的子线程)要更新主线程的UI的时候用来传递消息的。

因为非UI线程是不能直接操作主线程的。为什么要用子线程?因为当作一些耗时操作的时候如果直接在主线程里写代码,比如下载文件等等,当这个耗时操作超过6秒的时候就会使整个 App崩溃!所以必须得用子线程!!!当子线程的耗时操作完成后,用handler.sendEmptyMessage()方法或handler.mHandler.obtainMessage(int,Object) a).sendToTarget()通知主线程更新UI(这2个方法,前个是没有传任何结果值的空通知,后一个是能传结果的。);

比如:

package com.example.handlertest;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.widget.TextView;

public class MainActivity extends Activity {

	public Handler mHandler;
	
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final TextView tvResult = (TextView) findViewById(R.id.tv_result);
		mHandler = new Handler(){
			@Override
			public void handleMessage(Message msg) {
				switch (msg.what) {
				case 1:
					tvResult.setText(msg.obj.toString());
					break;

				default:
					break;
				}
				super.handleMessage(msg);
			}
		};
		
		new Thread(new Runnable(){
			int a = 1;
			@Override
			public void run() {
				for (int i = 0; i < 1000; i++) {
					a += 1;
				}
				mHandler.obtainMessage(1, a).sendToTarget();
			}}
		).start();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值