博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android应用开发学习笔记之多线程与Handler消息处理机制
阅读量:4706 次
发布时间:2019-06-10

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

作者:刘昊昱 

博客:

 

和JAVA一样,Android下我们可以通过创建一个Thread对象实现多线程。Thread类有多个构造函数,一般通过构造函数Thread(Runnable runnable)实现多线程,代码如下:

 

Thread thread = new Thread(new Runnable() {         //重写Runnable的run()方法         publicvoid run() {                   //子线程操作实现         }});thread.start();          // 启动线程thread执行

 

使用标准的JAVA线程类Thread可以创建子线程,但是在Android下,用Thread创建的线程有一个问题就是Thread创建的子线程不能对UI界面进行任何操作。为此,Android引入了Handler消息处理机制,通过Handler在子线程和UI线程之间传递信息,达到更新UI界面的目的。

下面看一个使用Handler处理消息的例子,其运行效果如下:

先来看主布局文件,其内容如下:

 

 

下面看主Activity文件的实现,其内容如下:

 

package com.liuhaoyu;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.TextView;public class MainActivity extends Activity {	public Handler handler;	    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                final TextView text = (TextView)findViewById(R.id.textView);        handler = new Handler() {    		public void handleMessage(Message msg) {    			Log.i("Looper",String.valueOf(msg.what));    			if(msg.what == 0x0)    			{    				text.append(Integer.toString(msg.arg1));    			}    			}     		};     	Thread thread = new Thread(new Runnable() {    		public void run() {    			int i = 0;    			while(true)    			{    				try {						Thread.sleep(1000);					} catch (InterruptedException e) {						// TODO Auto-generated catch block						e.printStackTrace();					}                    Message message = new Message();                    message.arg1 = i;                    message.what = 0x0;                    handler.sendMessage(message);                                        if(i < 9)    					i++;    				else    					i = 0;    			}    		}    	});    	thread.start();    }}

 

 

转载于:https://www.cnblogs.com/james1207/p/3278123.html

你可能感兴趣的文章
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
u-boot启动第一阶段
查看>>
MySQL批量SQL插入性能优化
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
用户画像展示
查看>>
C#中StreamReader读取中文出现乱码
查看>>
使用BufferedReader的时候出现的问题
查看>>
批处理文件中的路径问题
查看>>
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>
配置NRPE的通讯
查看>>