zoukankan      html  css  js  c++  java
  • handler通信机制

     1 package com.example.gp08_day26_handler3;
     2 
     3 import android.os.Bundle;
     4 import android.os.Handler;
     5 import android.os.Looper;
     6 import android.os.Message;
     7 import android.app.Activity;
     8 import android.view.Menu;
     9 import android.view.View;
    10 
    11 /**
    12  * 主线程给子线程发消息
    13  * @author qq
    14  *
    15  */
    16 public class MainActivity extends Activity {
    17 
    18     private Handler handler;//需要在子线程中实例化
    19     @Override
    20     protected void onCreate(Bundle savedInstanceState) {
    21         super.onCreate(savedInstanceState);
    22         setContentView(R.layout.activity_main);
    23     }
    24 
    25     public void sendMessage(View v)
    26     {
    27         //点击按钮给子线程发消息
    28         Message msg = Message.obtain();
    29         msg.obj ="hello,你好!";
    30         //把Message对象放入handler内部的MessageQueue对象,而handler内部的MessageQueue引用指向的是 Looper中的MessageQueue
    31         handler.sendMessage(msg);
    32     }
    33     //创建子线程
    34     class MyThread extends Thread
    35     {
    36         public void run()
    37         {
    38             //需要先有Looper对象
    39             Looper.prepare();//会创建一个Looper对象,并把该对象放入到该线程的本地变量中,在Looper的构造方法中创建了MessageQueue对象
    40             //在子线程中实例化handler,子线程中没有Looper对象 
    41             
    42             // mQueue = mLooper.mQueue; handler内部的MessageQueue引用指向的是 Looper中的MessageQueue对象
    43             handler = new Handler();//如果直接实例化Handler,会异常 new RuntimeException,原因是子线程中没有Looper对象 
    44             
    45             //让Looper对象循环读取MessageQueue中的消息
    46             //循环从队列中读取消息,当读到消息时,回去调用   msg.target.dispatchMessage(msg);
    47             //在Message类中有一个target成员,当发送消息时,target成员被赋值为当前的 handler对象
    48             Looper.loop();
    49         }
    50     }
    51 
    52 }
    mainActivity
  • 相关阅读:
    Linux学习笔记(20)linux exec
    【最佳实践】filezilla软件用bat自动化ftp传输文件
    Windows定时任务定时执行bat文件标准输出默认位置
    安装mysql odbc5.3.13
    如何查看windows server是否有web发布?
    C#串口通讯
    asp.net中通过post的方式导出文件操作。
    C#USB口通讯
    jquery UI的Widet
    asp.net中的常规认证方式枚举(涵盖mvc)(一)
  • 原文地址:https://www.cnblogs.com/bimingcong/p/4822421.html
Copyright © 2011-2022 走看看