
在andorID中,一个进程中最少也有一个线程,一般来说,有一个主线程(也就UI线程);以及多个子线程(也叫Worker线程)。
在androID中有一个规则:考虑到安全性,子线程不能动态的改变主线程中组件的属性值。
但为了执行一些耗时 *** 作,往往会将它们放在子线程中,执行完毕要更新主线程中的UI,所以就有了handler消息处理机制。
handler就相当于一个中转站,子线程通过sendMessage()等方法,将消息发送给handler对象,handler根据发送的消息对主线程进行相关的处理,从而达到子线程Update主线程的目的。
下面写个Demo:
1.布局,一个TextVIEw和一个button,实现在子线程中单击button实现改变TextVIEw的值。如图
2.MainActivity中(需要注意的是Handler要导入的包是os)
protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); final TextVIEw textVIEw= (TextVIEw) findVIEwByID(R.ID.text); button button= (button) findVIEwByID(R.ID.button); final Handler handler=new Handler(){ @OverrIDe public voID handleMessage(Message msg) { super.handleMessage(msg); if (msg.what==123){ textVIEw.setText("sb"); } } }; button.setonClickListener(new VIEw.OnClickListener() { @OverrIDe public voID onClick(VIEw v) { new Thread(new Runnable() { @OverrIDe public voID run() { handler.sendEmptyMessage(123); } }).start(); } }); }点赞收藏分享文章举报织田、信长发布了28 篇原创文章 · 获赞 15 · 访问量 7790私信 关注 总结 以上是内存溢出为你收集整理的android学习笔记之handler消息处理机制1全部内容,希望文章能够帮你解决android学习笔记之handler消息处理机制1所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)