[转]android Handler使用
转 http://blog.csdn.net/new_abc/article/details/8184634
不过这个我看不懂 不知道为什么i的值可以接着增长。。。
package com.example.test1; 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.ProgressBar; public class MyHandlerActivity1 extends Activity {
/** Called when the activity is first created. */
// 声明控件变量
ProgressBar bar = null;
Button startButton = null; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 根据控件的ID得到代表控件的对象,并为按钮设置监听器
bar = (ProgressBar) findViewById(R.id.bar);
startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new ButtonListener());
} // 当点击startButton按钮时,就会执行ButtonListener的onClick方法
// 内部类 ButtonListener是类名 (内部类在GUI中非常常见 主要是事件和线程的处理)
class ButtonListener implements OnClickListener {
public void onClick(View v) {
// TODO Auto-generated method stub
bar.setVisibility(View.VISIBLE);
//handler.post(r)其实这样并不会新起线程,只是执行的runnable里的run()方法,
//却没有执行start()方法,所以runnable走的还是UI线程。
updateBarHandler.post(updateThread);
} } // 使用匿名内部类来复写Handler当中的handleMessage方法
// updateBarHandler 是类的实例名
// 注意虽然这里写着Handler 但是updateBarHandler 实际上可以理解为是Handler子类的对象
// 因此 这里的匿名指的是Handler的子类匿名了
// 这里子类重写了handleMessage 方法
//http://ayis.iteye.com/blog/219590
Handler updateBarHandler = new Handler() { @Override
public void handleMessage(Message msg) {
bar.setProgress(msg.arg1);
Bundle bundle = msg.getData();
updateBarHandler.post(updateThread);
System.out.println("test---->" + bundle.getString("test"));
} }; // 线程类,该类使用匿名内部类的方式进行声明
// 这里Runnable 是一个街口 有一个类实现了它 类的内容就是 这个{。。。}中的内容
// 因为我们不知道这个实现了Runable接口的类的名字 所以匿名
// http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html
Runnable updateThread = new Runnable() {
int i = 0; public void run() {
System.out.println("Begin Thread" + i);
i = i + 10;
// 得到一个消息对象,Message类是有Android操作系统提供
Message msg = updateBarHandler.obtainMessage(); // 将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员变量传递消息,优点是系统性能消耗较少
msg.arg1 = i;
Bundle bundle = new Bundle();
bundle.putString("test", "test bundle");
msg.setData(bundle);
try {
// 设置当前显示睡眠1秒
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 将msg对象加入到消息队列当中
if (i > 100) {
// 如果当i的值为100时,就将线程对象从handler当中移除
updateBarHandler.removeCallbacks(updateThread);
System.out.println(">>>>>>");
} else {
updateBarHandler.sendMessage(msg);
System.out.println("<<<<<<");
}
}
};
}
[转]android Handler使用的更多相关文章
- Android Handler leak 分析及解决办法
In Android, Handler classes should be static or leaks might occur, Messages enqueued on the applicat ...
- 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 Handler的使用
大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title. 首先我们看一下习惯了Java编程的人,在不知道Handl ...
- [Android]Handler的消息机制
最经面试中,技术面试中有一个是Handler的消息机制,细细想想,我经常用到的Handler无非是在主线程(或者说Activity)新建一个Handler对象,另外一个Thread是异步加载数据,同时 ...
- 详解Android Handler的使用-别说你不懂handler
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念 Handler主 ...
- Android handler Thread 修改UI Demo
/********************************************************************** * Android handler Thread 修改U ...
- Android Handler的简单使用
大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title. 首先我们看一下习惯了Java编程的人,在不知道Handl ...
- 详解Android Handler的使用
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念 Handler主 ...
- 详解Android Handler的使用-别说你不懂handler(转)
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念 Handler主 ...
随机推荐
- iOS深入学习 (Block全面分析)
本文翻译自苹果的文档,有删减,也有添加自己的理解部分. 如果有Block语法不懂的,可以参考fuckingblocksyntax,里面对于Block 为了方便对比,下面的代码我假设是写在ViewCon ...
- (转)探讨:ASP.NET技术的学习顺序问题
探讨:ASP.NET技术的学习顺序问题 摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面 ...
- tomcat中开启的对SSL(https)的支持
打开conf/server.xml会发现有下面一段配置被注释着: <!-- <Connector port="8443" protocol="HTTP/1.1 ...
- zoj 1025Wooden Sticks(贪心)
递增子序列的最小组数.可以直接贪心,扫一遍 #include<iostream> #include<cstring> #include<cstdio> #inclu ...
- csapp lab2 bomb 二进制炸弹《深入理解计算机系统》
bomb炸弹实验 首先对bomb这个文件进行反汇编,得到一个1000+的汇编程序,看的头大. phase_1: 0000000000400ef0 <phase_1>: 400ef0: 48 ...
- Mybatis使用存储过程(MySql)
推荐文章:http://www.iteye.com/topic/1132302 http://yhjhappy234.blog.163.com/blog/static/3163283220124557 ...
- 插入数据,返回最新id
最简单的方法就是在查询之后select @@indentity. sql代码: INSERT INTO table_name (.....) VALUES(......) SELECT @@IDEN ...
- java实现cmd的copy功能
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
- Garbage
垃圾回收 http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage-collector/ http://blog.jobbole ...
- 求模和求余(附加C语言实现)
求模和求余的总体计算步骤如下: 1.求整数商 c = a/b 2.计算模或者余数 r = a - c*b 求模和求余的第一步不同,求余在取c的值时向0方向舍入;取模在计算c的值时向无穷小方向舍入. ...