Android ——Handler相关
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相关的更多相关文章
- Android Handler leak 分析及解决办法
In Android, Handler classes should be static or leaks might occur, Messages enqueued on the applicat ...
- [Android]Handler的消息机制
最经面试中,技术面试中有一个是Handler的消息机制,细细想想,我经常用到的Handler无非是在主线程(或者说Activity)新建一个Handler对象,另外一个Thread是异步加载数据,同时 ...
- android Handler vs Timer
Handler vs Timer 在我们Android开发过程中,经常需要执行一些短周期的定时任务,这时候有两个选择Timer或者Handler.然而个人认为: Handler 在多个方面比Timer ...
- Android Handler机制彻底梳理
Android的消息机制其实也就是Handler相关的机制,对于它的使用应该熟之又熟了,而对于它的机制的描述在网上也一大堆[比如15年那会在网上抄了一篇https://www.cnblogs.com/ ...
- 4 Handler相关类——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. Handler相关类概述 处理程序相关类一共有三个,其没有派生继承关系,但是其有友元关系和使用关系 ...
- Android Handler练习
package com.example.myact12; import java.util.Random; import android.support.v7.app.ActionBarActivit ...
- Android Handler简单使用
package com.example.myhandlertest3; import android.os.Bundle; import android.os.Handler; import andr ...
- android 技术相关Blog
android 技术相关 LVXIANGAN的专栏 http://blog.csdn.net/LVXIANGAN/article/category/1101038 Android NFC 开发实例 h ...
- Android Handler的使用
大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title. 首先我们看一下习惯了Java编程的人,在不知道Handl ...
随机推荐
- 从协议VersionedProtocol开始3——ClientProtocol、DatanodeProtocol、NamenodeProtocol、RefreshAuthorizationPolicyProtocol、RefreshUserMappingsProtocol
1.ClientProtocol这个玩意的版本号是61L:DatanodeProtocol 是26L:NamenodeProtocol是 3L;RefreshAuthorizationPolicyPr ...
- C++指针(部分有误需修改)
一.取地址运算符&(内存地址) C++编译的程序占用的内存分为以下几个部分: 1.栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.与其它分区不同 ...
- ppurl
ppurl 就这么挂了?? 简直不敢相信 我才刚上不久,它竟然就这么挂啦??? 还是转到哪了? 有人知道吗? 表示我很愤怒,就好像当年新浪爱问共享就这么挂了一样 过了很久我才知道原来它转到新浪微盘了. ...
- iphone获取当前流量信息
通过读取系统网络接口信息,获取当前iphone设备的流量相关信息,统计的是上次开机至今的流量信息. 代码 悦德财富:https://yuedecaifu.com 1 2 3 4 5 6 7 8 9 1 ...
- 系统的 host文件的作用
有些用户可能已经注意到,我们在上网时除了可使用常规的 http://www.xxx.com或http://www.xxx.com.cn等形式的网站域名之外,还可以使用类似于“202.106.184.2 ...
- EF学习笔记(一)
EF(EntityFramwork)实体框架:主要是将实体类(EntityClass)和数据表(Table)进行映射(Map). EF核心对象: DbContext (数据访问核心对象) ...
- FSMC stm32
1.FSMC机制 FSMC(Flexihie Static Memory Controller,可变静态存储控制器)是STM32系列中内部集成256 KB以上FlaSh,后缀为xC.xD和xE的高存储 ...
- linux上安装apache
1 安装aprtar -zxvf apr-1.4.2.tar.gz cd apr-1.4.2.tar.gz ./configure --prefix=/usr/local/aprmake & ...
- 20145210 《Java程序设计》第08周学习总结
第十四章 NIO与NIO2 14.1 认识NIO •NIO概述 •NIO使用频道来衔接数据结点 •在处理数据时,NIO可以让你设定缓冲区容量 •Channel架构与操作 •isOpen():确认Cha ...
- 推荐mysql优化的21条经验
1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这 1. 为查询缓存优 ...