欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中Handler与Message的简单实例

程序员文章站 2023-12-13 13:05:40
android中handler与message的简单实例 前言: 虽然笔者已经学习了android的asynctask来实现一部消息的处理。但是在android的学习中...

android中handler与message的简单实例

前言:

虽然笔者已经学习了android的asynctask来实现一部消息的处理。但是在android的学习中,经常会在一些demo中看到handler与message的一些使用,所以handler与message的学习也是有必要了。至于学多少,笔者还是比较坚持自己的看法,“用多少,学多少”,毕竟已经有了asynctask如此方便的东西,handler与message也不是那么必不可缺了。(如此文的简单了解一下还是不需要花太多时间的)

此实例是在handler中更新textview的内容,新手读者可能会问为什么不直接在oncreate中一行解决呢?还是主要是需求问题,倘若我们需要在子线程中从网上获取内容,然后更新到textview中,那么直接写在主线程中不合理的。但是由于此实例主要是一个参考作用,并且让它更能让新手理解,所以并没有写从网络获取内容的代码了。(直接在子线程中是不能执行更新ui的操作的,程序会崩溃)

上一下效果图:

分别是点击button前后效果

    Android中Handler与Message的简单实例

Android中Handler与Message的简单实例

好了,直接看一下概念与代码:

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的使用,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

上一篇:

下一篇: