View(视图)——消息机制

一.概念

实现多线程之间的信息传递的机制。

二.用法

1.Message  消息

1-创建 Message.obtain(),使用消息池获取或创建新消息。

2-public 属性

1>what int  表示id

2>arg1  int  参数1

3>arg2  int  参数2

4>obj   Object  对象

2.Handler  处理器

1-Message的处理器,也负责发送和移除

2-方法

1>sendMessage(Message)  发送即时消息,即时发送和处理

2>sendMessageDelayed(Message,延时时间ms数)  发送延时消息

3>sendEmptyMessage(int what)  发送空消息

4>sendEmptyMessageDelayed(int what,延时时间ms数)  发送延时空消息

5>handlerMessage(Message msg)  处理消息的回调方法

6>移除还未处理的消息 removeMessage(int what)

3.MessageQueue   消息队列

4.Looper  循环器

消息的即时与延时接收:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity6"
11     android:orientation="vertical">
12
13
14     <TextView
15         android:layout_width="wrap_content"
16         android:layout_height="wrap_content"
17         android:text="接收消息"
18         android:id="@+id/tv_5"/>
19
20     <Button
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:text="发消息"
24         android:onClick="bt2_OnClick"/>
25
26
27
28 </LinearLayout>

.xml

 1 package com.example.wang.testapp2;
 2
 3 import android.os.Handler;
 4 import android.os.Message;
 5 import android.support.v7.app.AppCompatActivity;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 import android.widget.TextView;
 9 import android.widget.Toast;
10 import java.util.Random;
11
12
13 public class TestActivity6 extends AppCompatActivity {
14
15     TextView tv_3,tv_4,tv_5,tv_6;
16
17     //定义Handler
18
19     Handler h=new Handler(){
20
21         @Override
22         public void handleMessage(Message msg) {
23             super.handleMessage(msg);
24
25             //处理消息
26             if (msg.what==1)
27             {
28                 String m=msg.obj.toString();
29
30                 tv_5.setText(tv_5.getText()+" "+m);
31             }
32             else if(msg.what==2)
33             {
34                 tv_5.setText(tv_5.getText()+" 空消息");
35             }
36         }
37     };
38
39     @Override
40     protected void onCreate(Bundle savedInstanceState) {
41         super.onCreate(savedInstanceState);
42         setContentView(R.layout.activity_test6);
43
44         tv_5=(TextView)findViewById(R.id.tv_5);
45
46     }
47
48
49
50     //发消息
51     public  void bt2_OnClick(View v)
52     {
53         //启动线程
54         new  Thread(){
55             @Override
56             public void run() {
57
58                 //发送消息
59                 //1.创建Message
60
61                 Message m=Message.obtain();
62                 m.what=1;//id
63                 m.obj="新信息1";
64
65                 //2.发送即时消息
66                 h.sendMessage(m);
67
68                 m=Message.obtain();
69                 m.what=1;//id
70                 m.obj="新信息2";
71
72                 //发送延时消息
73                 h.sendMessageDelayed(m, 2000);
74
75                 h.sendEmptyMessage(2);
76
77                 h.sendEmptyMessageDelayed(2,3000);
78
79
80             }
81         }.start();
82     }
83
84 }

.java

时间: 2024-10-07 05:27:49

View(视图)——消息机制的相关文章

浅析Android中的消息机制-解决:Only the original thread that created a view hierarchy can touch its views.

在分析Android消息机制之前,我们先来看一段代码: [html] view plaincopyprint? public class MainActivity extends Activity implements View.OnClickListener { private TextView stateText; private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onC

java:从消息机制谈到观察者模式

本文接编程思想之消息机制,读者可以结合编程思想之消息机制一起阅读,也可以直接从本文开始阅读. 从简单的例子开始 同样,我们还是先看一个简单例子:创建一个窗口实现加法的计算功能.其效果如下: 图1: 加法计算 Calculator.java: import javax.swing.*; import javax.swing.border.BevelBorder; import java.awt.*; import java.awt.event.ActionEvent; import java.aw

iOS开发系列--通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本地通知 推送通

iOS开发系列--通知与消息机制--转

来自:http://www.cocoachina.com/ios/20150318/11364.html 概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何

Android中的消息机制

在分析Android消息机制之前.我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListener { private TextView stateText; private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s

浅析Android中的消息机制(转)

原博客地址:http://blog.csdn.net/liuhe688/article/details/6407225 在分析Android消息机制之前,我们先来看一段代码: 1 public class MainActivity extends Activity implements View.OnClickListener { 2 private TextView stateText; 3 private Button btn; 4 5 @Override 6 public void onC

iOS开发-- Notification 通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本文包括下面内容

iOS开发系列--通知与消息机制(转)

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本地通知 推送通

通知与消息机制

概述 在多数移动应用中任何时候都只能 有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其 包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可 以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两 种概念的混淆. 本地通知

Android中的Handler消息机制

转自:http://blog.csdn.net/liuhe688/article/details/6407225 在分析Android消息机制之前,我们先来看一段代码: public class MainActivity extends Activity implements View.OnClickListener { private TextView stateText; private Button btn; @Override public void onCreate(Bundle