layout文件:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.hanqi.testapp2.PractiseActivity4"
android:orientation="vertical"> <TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tvw1"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tvw2"/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btt1"
android:text="随机选择"
android:onClick="btn_onClick"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="接受的消息"
android:id="@+id/tv_5"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发消息"
android:onClick="btn2_onClick"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="10"
android:id="@+id/tv_6"
android:layout_gravity="center"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="增加"
android:onClick="btn3_onClick"
android:id="@+id/bt_3"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="减少"
android:onClick="btn3_onClick"
android:id="@+id/bt_4"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="暂停"
android:onClick="btn3_onClick"
android:id="@+id/bt_5"/>
</LinearLayout>

java类:

 package com.hanqi.testapp2;

 import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class PractiseActivity4 extends AppCompatActivity { TextView tvw1;
Button btt1;
TextView tvw2;
TextView tv_5;
TextView tv_6;
Button bt_3;
Button bt_4;
Button bt_5;
//定义Handler
Handler h = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
//处理消息
if (msg.what ==1)
{
String m = msg.obj.toString();
tv_5.setText(tv_5.getText()+" "+m);
}
else if (msg.what ==2)
{
tv_5.setText(tv_5.getText()+"空消息");
}
}
}; int i = 10;
Handler hl = new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what)
{
case 1:
if (i ==20)
{
return;
}
i++;
tv_6.setText(i + "");
//发送
hl.sendEmptyMessageDelayed(1, 1000);
hl.removeMessages(2);
bt_3.setEnabled(false);
bt_4.setEnabled(true);
bt_5.setEnabled(true);
break;
case 2:
if (i ==0)
{
return;
}
i--;
tv_6.setText(i+"");
hl.sendEmptyMessageDelayed(2, 1000);
hl.removeMessages(1);
bt_3.setEnabled(true);
bt_4.setEnabled(false);
bt_5.setEnabled(true);
break;
case 3:
hl.removeMessages(1);
hl.removeMessages(2);
bt_3.setEnabled(true);
bt_4.setEnabled(true);
bt_5.setEnabled(false);
break;
}
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practise4);
tvw1 = (TextView)findViewById(R.id.tvw1);
btt1 = (Button)findViewById(R.id.btt1);
tvw2 = (TextView)findViewById(R.id.tvw2);
tv_5 = (TextView)findViewById(R.id.tv_5);
tv_6 = (TextView)findViewById(R.id.tv_6);
bt_3 = (Button)findViewById(R.id.bt_3);
bt_4 = (Button)findViewById(R.id.bt_4);
bt_5 = (Button)findViewById(R.id.bt_5);
}
//三个按钮
public void btn3_onClick(View v)
{
switch (v.getId())
{
case R.id.bt_3:
//发送增加消息
hl.sendEmptyMessage(1);
break;
case R.id.bt_4:
hl.sendEmptyMessage(2);
break;
case R.id.bt_5:
hl.sendEmptyMessage(3);
break;
}
}
//发消息
public void btn2_onClick(View v)
{
//启动线程
new Thread(){
@Override
public void run() {
//发送消息
//1.创建Message
Message m = Message.obtain();
m.what = 1;//id
m.obj = "新信息";
//2.发送即时消息
h.sendMessage(m);
m = Message.obtain();
m.what = 1;//id
m.obj = "新信息";
//发送延时消息
h.sendMessageDelayed(m,2000);
h.sendEmptyMessage(2);
h.sendEmptyMessageDelayed(2,1000);
}
}.start();
} // String c1 = "北京";
// String c2 = "上海";
// public void btn_onClick(View v)
// {
// //创建子线程1
// new Thread(){
// @Override
// public void run() {
// for (int i=0;i<20;i++)
// {
// if(i%2==0)
// {
// c1="";
// }
// else
// {
// c1="北京";
// }
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// tvw1.setText(c1);
// }
// });
// //暂停
// try {
// Thread.sleep((int) (Math.random()*1000));
// }
// catch (Exception e)
// {
//
// }
// }
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// Toast.makeText(PractiseActivity4.this, c1 + "循环完成", Toast.LENGTH_SHORT).show();
// }
// });
// }
// }.start();
// //创建子线程2
// new Thread(){
// @Override
// public void run() {
// for (int i=0;i<20;i++)
// {
// if(i%2==0)
// {
// c2="";
// }
// else
// {
// c2="上海";
// }
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// tvw2.setText(c2);
// }
// });
// //暂停
// try {
// Thread.sleep((int) (Math.random()*1000));
// }
// catch (Exception e)
// {
//
// }
// }
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// Toast.makeText(PractiseActivity4.this, c2 + "循环完成", Toast.LENGTH_SHORT).show();
// }
// });
// }
// }.start();
// }
}

效果为:

Android ——Handler相关的更多相关文章

  1. Android Handler leak 分析及解决办法

    In Android, Handler classes should be static or leaks might occur, Messages enqueued on the applicat ...

  2. [Android]Handler的消息机制

    最经面试中,技术面试中有一个是Handler的消息机制,细细想想,我经常用到的Handler无非是在主线程(或者说Activity)新建一个Handler对象,另外一个Thread是异步加载数据,同时 ...

  3. android Handler vs Timer

    Handler vs Timer 在我们Android开发过程中,经常需要执行一些短周期的定时任务,这时候有两个选择Timer或者Handler.然而个人认为: Handler 在多个方面比Timer ...

  4. Android Handler机制彻底梳理

    Android的消息机制其实也就是Handler相关的机制,对于它的使用应该熟之又熟了,而对于它的机制的描述在网上也一大堆[比如15年那会在网上抄了一篇https://www.cnblogs.com/ ...

  5. 4 Handler相关类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. Handler相关类概述 处理程序相关类一共有三个,其没有派生继承关系,但是其有友元关系和使用关系 ...

  6. Android Handler练习

    package com.example.myact12; import java.util.Random; import android.support.v7.app.ActionBarActivit ...

  7. Android Handler简单使用

    package com.example.myhandlertest3; import android.os.Bundle; import android.os.Handler; import andr ...

  8. android 技术相关Blog

    android 技术相关 LVXIANGAN的专栏 http://blog.csdn.net/LVXIANGAN/article/category/1101038 Android NFC 开发实例 h ...

  9. Android Handler的使用

    大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title. 首先我们看一下习惯了Java编程的人,在不知道Handl ...

随机推荐

  1. plist 和 Xib

    plist文件 mainbudin加载时候有后缀 xib文件  mainbudin加载时候无需后缀

  2. java抽象类与接口 详解

    在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类往往用来表征我们在对问题 ...

  3. git——学习笔记(二)远程仓库

    GIT杀手锏之一——远程仓库 拥有远程仓库的两个办法 1:搭一个Git服务器  2:在GitHub上免费托管的Git仓库 本地仓库   远程仓库 一.在GitHub上免费托管的Git仓库 电脑: 1. ...

  4. Asp.Net应用运行原理

    一.运行原理图 二.对于HttpModule和HttpHandler的概念可能还不是很清楚,请先看Asp.Net应用生命周期.RAR 或者 Asp.Net深入解析 第四章,流程图太大无法粘贴 三.传智 ...

  5. linux下文件系统的介绍

    一.linux文件系统的目录结构 目录 描述 / 根目录 /bin 做为基础系统所需要的最基础的命令就是放在这里.比如 ls.cp.mkdir等命令:功能和/usr/bin类似,这个目录中的文件都是可 ...

  6. SVG 2D入门3 - 文本与图像

    SVG中渲染文本 SVG的强大能力之一是它可以将文本控制到标准HTML页面不可能有的程度,而无须求助图像或其它插件.任何可以在形状或路径上执行的操作(如绘制或滤镜)都可以在文本上执行.尽管SVG的文本 ...

  7. python的循环语句等

    names = ['Michael', 'Bob', 'Tracy'] for name in names: print name sum = 0 for x in [1, 2, 3, 4, 5, 6 ...

  8. 程序员是怎么炼成的---OC题集--练习答案与题目(3)

    1.init 2.initWithBytes:length:encoding: 3.initWithCharacters:length: 4.initWithCString:encoding: 5.i ...

  9. codeforces #round363 div2.C-Vacations (DP)

    题目链接:http://codeforces.com/contest/699/problem/C dp[i][j]表示第i天做事情j所得到最小的假期,j=0,1,2. #include<bits ...

  10. PHP 上传图片和安全处理

    上传图片 public function images() { $data = $_FILES['file']; switch($data['type']) { case 'image/jpeg': ...