java 中Handler 和Runnable 的使用 异步发送消息 转

public class MainActivity extends Activity {
TextView text1,
text2;
Button button;
Thread th;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
text1 =
(TextView)findViewById(R.id.text1);
text2 =
(TextView)findViewById(R.id.text2);
button =
(Button)findViewById(R.id.button1);
button.setOnClickListener(new
View.OnClickListener() {
@Override
public void
onClick(View v) {
// TODO Auto-generated method stub

th = new Thread(runnable);
th.start();

}
});
}
Handler myHandler = new Handler(){

@Override
public void handleMessage(Message msg) {

// TODO Auto-generated method stub
switch (msg.what) {

case 1:

System.out.println("-----------1--------------");
System.out.println(msg.getData().getString("s1"));

System.out.println(msg.getData().getString("s2"));

try{
text1.setText(msg.getData().getString("s1"));

text2.setText(msg.getData().getString("s1"));

}catch(Exception e){
e.printStackTrace();

}
break;

default:

break;
}
super.handleMessage(msg);

}
};

Runnable runnable = new Runnable() {

@Override
public void run() {
// TODO Auto-generated
method stub
String s1 = "fsdfsgfdsgdfgfdgdhshshs";

String s2 = "fsfsdgdshdhdshrehreherh";

Message msg =
new Message();
msg.what = 1;
Bundle bundle =
new Bundle();
bundle.putString("s1", s1);

bundle.putString("s2", s2);
msg.setData(bundle);

MainActivity.this.myHandler.sendMessage(msg);
}

};
}

时间: 2024-10-24 02:17:45

java 中Handler 和Runnable 的使用 异步发送消息 转的相关文章

Java 中Thread 和Runnable的区别

转:http://blog.csdn.net/wwww1988600/article/details/7309070 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限. 两种实现方式的区别和联系:    在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现

java中 synchronized 的使用,确保异步执行某一段代码。

最近看了个有关访问网络url和下载的例子,里面有几个synchronized的地方,系统学习下,以下内容很重要,记下来. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 二.然而,当一个线程访问object的一个synchroniz

Java 中的“implements Runnable” 和“extends Thread”(转)

知识点 “implements Runnable” 和“extends Thread”的不同 具体分析 最近在学习Android中的Handler消息传递机制时,创建新线程有两种方式:一种是实现Runnable接口(implements Runnable)而另一种则是继承Thread类(extends Thread).而这两种方式有什么异同呢?带着这个疑问,Google了一些资料出来,本着分享给大家同时也方便自己查阅复习,写一篇文章来记录它. 首先看看这两种方式都是怎样的? 1 public c

Java 中的“implements Runnable” 和“extends Thread”

知识点 “implements Runnable” 和“extends Thread”的不同 具体分析 最近在学习Android中的Handler消息传递机制时,创建新线程有两种方式:一种是实现Runnable接口(implements Runnable)而另一种则是继承Thread类(extends Thread).而这两种方式有什么异同呢?带着这个疑问,Google了一些资料出来,本着分享给大家同时也方便自己查阅复习,写一篇文章来记录它. 首先看看这两种方式都是怎样的? 1 public c

[转载] 从Handler.post(Runnable r) ,Handler.sendEmptyMessage()梳理Android的消息机制(以及handler的内存泄露)

Handler 每个初学Android开发的都绕不开Handler这个"坎",为什么说是个坎呢,首先这是Android架构的精髓之一,其次大部分人都是知其然却不知其所以然.今天看到Handler.post这个方法之后决定再去翻翻源代码梳理一下Handler的实现机制. 异步更新UI 先来一个必背口诀"主线程不做耗时操作,子线程不更新UI",这个规定应该是初学必知的,那要怎么来解决口诀里的问题呢,这时候Handler就出现在我们面前了(AsyncTask也行,不过本质

Java中使用HTTP阻塞式调用服务器API

应用场景:前端页面点击刷新,调用服务器A上Java接口,然后A调用服务器B的后台Python接口实时刷新后台数据库. 在这个场景中会涉及到两个问题:异步,Python服务器压力 (一)解决Python服务器压力 如果Python服务器接口不做任何措施,那么可能会有恶意的访问,从而导致该服务器一直刷新后台数据库. 我的解决方式是:服务器B会提供一串字符串给服务器A,当服务器A调用服务器B的服务时,将传递的参数和该字符串拼接再进行MD5加密,从而在服务器B上通过这个token值明确对方身份. (二)

Android 使用handler实现线程间发送消息 (主线程 与 子线程之间)、(子线程 与 子线程之间)

keyword:Android 使用handler实现线程间发送消息 (主线程 与 子线程之间).(子线程 与 子线程之间) 相信大家平时都有使用到异步线程往主线程(UI线程)发送消息的情况. 本文主要研究Handler的消息发送. 包含主线程往子线程发送消息,子线程之间互相发送消息. 一.主线程向子线程发送消息. 实现过程比較简单: 主线程发送消息到异步线程.异步线程接收到消息后在再发送一条消息给主线程. 1. 初始化主线程的Handler,用来接收子线程的消息. 2. 启动异步线程.在异步线

Java中Runnable和Thread的区别

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限. 下面看例子: 代码如下: package org.thread.demo; class MyThread extends Thread{ private String name; public MyThread(String

异步消息处理机制-Android中Handler原理(续)

异步消息处理线程是指线程启动后会进入一个无限循环,每循环一次,从内部的消息队列里面取出一个消息,并回调相应的消息处理函数.一般在任务常驻,比如用户交互任务的情况下使用异步消息处理线程. 之前在Android中Handler原理里面研究过android里实现异步消息处理线程的方式,基本逻辑如图所示 今天就用java将其简单的模拟出来加深印象,下面的类图是用工具导出的,不太正规,不过能大概看出类之间的关系 Message类:消息类 public class Message { public int