Android中Handler与Message的简单实例
android中handler与message的简单实例
前言:
虽然笔者已经学习了android的asynctask来实现一部消息的处理。但是在android的学习中,经常会在一些demo中看到handler与message的一些使用,所以handler与message的学习也是有必要了。至于学多少,笔者还是比较坚持自己的看法,“用多少,学多少”,毕竟已经有了asynctask如此方便的东西,handler与message也不是那么必不可缺了。(如此文的简单了解一下还是不需要花太多时间的)
此实例是在handler中更新textview的内容,新手读者可能会问为什么不直接在oncreate中一行解决呢?还是主要是需求问题,倘若我们需要在子线程中从网上获取内容,然后更新到textview中,那么直接写在主线程中不合理的。但是由于此实例主要是一个参考作用,并且让它更能让新手理解,所以并没有写从网络获取内容的代码了。(直接在子线程中是不能执行更新ui的操作的,程序会崩溃)
上一下效果图:
分别是点击button前后效果
好了,直接看一下概念与代码:
message:
message是在线程之间传递的消息,它可以在内部携带少量的信息,用于再不同线程之间交换数据。除了what字段,还可以用arge1和arg2字段来携带一些整型数据,使用obj字段携带一个object对象。
handler
handler顾名思义就是处理者的意思,它主要是用于发送和处理消息的。发送消息一般是使用handler的sendmessage()方法,而发出的消息经过一系列地辗转处理后,最终会传递到handler的handlemessage()方法中。
mainactivity:
import android.app.activity; import android.os.bundle; import android.os.handler; import android.os.message; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; public class mainactivity extends activity implements onclicklistener { //定义update_text这个整型敞亮,用于表示更新textview这个动作 public static final int update_text = 1; private textview text; private button changetext; //创建一个handler private handler handler = new handler() { public void handlemessage(message msg) { switch (msg.what) { case update_text: //在这里可以进行ui操作 //对msg.obj进行string强制转换 string string=(string)msg.obj; text.settext(string); break; default: break; } } }; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); text = (textview) findviewbyid(r.id.text); changetext = (button) findviewbyid(r.id.change_text); changetext.setonclicklistener(this); } @override public void onclick(view v) { switch (v.getid()) { case r.id.change_text: new thread(new runnable() { @override public void run() { //创建一个message //设置what字段的值为update_text,主要是为了区分不同的message //设置message.obj的内容 //调用handler的message对象 //handler中的handlermessage对象是在主线程中运行的 string string="nice to meet you"; message message = new message(); message.what = update_text; message.obj=string; handler.sendmessage(message); } }).start(); break; default: break; } } }
activity_main:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <button android:id="@+id/change_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="change text" /> <textview android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerinparent="true" android:text="hello world" android:textsize="20sp" /> </relativelayout>
以上就是android中handler与message的使用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读
-
Android中Handler与Message的简单实例
-
Android中AsyncTask与handler用法实例分析
-
Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码
-
Java中位运算(移位、位与、或、异或、非) 的简单实例
-
Android中Progress的简单实例
-
Android 录音与播放功能的简单实例
-
Android中Handler与Message的简单实例
-
Android中AsyncTask与handler用法实例分析
-
Android 中HttpURLConnection与HttpClient使用的简单实例
-
Android中AnimationDrawable使用的简单实例