博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Handler在主线程创建和在子线程创建的示例(18)
阅读量:6213 次
发布时间:2019-06-21

本文共 1911 字,大约阅读时间需要 6 分钟。

hot3.png

//在主线程创建Handler,实现UI的更新,以下是一个例子public class MainActivity extends Activity {	private TextView text_show;	// 在主线程中创建消息Handler	// 主线程创建方式	Handler handler = new Handler() {		// 要重写里面的方法		public void handleMessage(android.os.Message msg) {			// 跟新UI,设置textview			if (msg.what == 1) {				text_show.setText((String) msg.obj);			}		};	};// 注意这里要分号	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		text_show = (TextView) this.findViewById(R.id.text_show);	}	public void sendMessage(View view) {		// 耗时工作在子线程,然后向主线程传递数据		new Thread(new Runnable() {			@Override			public void run() {				// Message对象可以通过new出来,但不建议,通常使用 Message.obtain() 或				// Handler.obtainMessage() 方法来从消息池中获得空消息对象,以节省资源;				Message message = Message.obtain();				message.what = 1;				message.obj = "这是子线程,请接收";				// 封装完数据发送给主线程				handler.sendMessage(message);			}		}).start();	}}//在子线程运用的例子public class SecondActivity extends Activity {	private TextView text_show;	// 在子线程中创建消息Handler	// 子线程创建方式	private Handler handler;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		text_show = (TextView) this.findViewById(R.id.text_show);		new Mythread().start();	}	public void sendMessage(View view) {		Message message = Message.obtain();		message.what = 1;		message.obj = "这是主线程在发送,请接收";		// 封装完数据发送给子线程		handler.sendMessage(message);	}	// Handler在子线程张处理消息	class Mythread extends Thread {		@Override		public void run() {			// 1.创建looper			Looper.prepare();			handler = new Handler() {				// 要重写里面的方法				@Override				public void handleMessage(Message msg) {					switch (msg.what) {					case 1:						Log.i("MainActivity", (String) msg.obj);						break;					}				}			};// 注意这里要分号				// 3.循环读取MessageQueue			Looper.loop();		}	}}

转载于:https://my.oschina.net/u/2541146/blog/625266

你可能感兴趣的文章
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
癌细胞最偏爱10个字,你却每天都在喂养“它”!
查看>>
功能测试的国别差异(日本与欧美)
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
Ubuntu 14 Open Ldap Add Root
查看>>
Vim脚本 - 竖线'|' 和反斜线'\'
查看>>
netty框架的学习笔记 + 一个netty实现websocket通信案例
查看>>
我的友情链接
查看>>
centos下yum安装ffmpeg
查看>>
磁盘超过2T无法用fdisk分区的问题
查看>>
我的友情链接
查看>>
MySQL三大范式
查看>>