package com.boao;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MyHandlerActivity extends Activity
{
/** Called when the activity is first created. */
// 主线程给子线程发送消息
Button button3;
TextView textView;
// 主线程
MainActivityHandler mainHandler;
// 其它线程
List<MyThreadHandler> list = new ArrayList<MyHandlerActivity.MyThreadHandler>();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button3 = (Button) findViewById(R.id.button3);
textView = (TextView) findViewById(R.id.text);
button3.setOnClickListener(clickListener);
for (int i = 0; i < 10; i++)
{
MyThread thread = new MyThread();
thread.start();
}
}
OnClickListener clickListener = new OnClickListener()
{
@Override
public void onClick(View v)
{
switch (v.getId())
{
// 主线程给子线程发送消息
case R.id.button3:
// 在主线程中获取子线程的message对象然后再发送
for (int i = 0; i < list.size(); i++)
{
MyThreadHandler myThreadHandler = list.get(i);
Message msg = myThreadHandler.obtainMessage(1, "这是主线程发送的消息"
+ myThreadHandler.toString());
// msg.obj="这是主线程发送的消息";
myThreadHandler.sendMessage(msg);
}
break;
default:
break;
}
}
};
class MainActivityHandler extends Handler
{
public MainActivityHandler(Looper looper)
{
super(looper);
}
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
textView.setText("我是主线程,这是收到的消息:" + msg.obj + msg.getWhen());
}
}
// //////////////////////////////////////////////////////////////////////////
// 以下是其他线程类和他的handler类
class MyThread extends Thread
{
@Override
public void run()
{
super.run();
// 创建该线程的Looper对象,用于接收消息
Looper.prepare();
// 线程的looper创建的handler表示消息接收者是子线程
MyThreadHandler myThreadHandler = new MyThreadHandler(
Looper.myLooper());
list.add(myThreadHandler);
// 循环从MessageQueue中取消息。
Looper.loop();
}
}
class MyThreadHandler extends Handler
{
public MyThreadHandler(Looper looper)
{
super(looper);
}
@Override
public void handleMessage(Message msg)
{
super.handleMessage(msg);
// textView.setText("我是子线程,这是收到的消息:" + msg.obj);这里直接操作UI线程的内容是不行的会出错
mainHandler = new MainActivityHandler(Looper.getMainLooper());
Message message = new Message();
message.obj = "子线程收到消息.收到的消息内容是:" + msg.obj;
mainHandler.sendMessage(message);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MyHandler2主线程给多个线程发送消息.rar (36个子文件)
MyHandler2
.project 846B
bin
AndroidManifest.xml 730B
MyHandler2.apk 15KB
dexedLibs
res
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
crunch
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 2KB
resources.ap_ 10KB
classes
com
boao
R$string.class 397B
R$layout.class 364B
R$drawable.class 377B
MyHandlerActivity$MyThread.class 1KB
MyHandlerActivity$MyThreadHandler.class 1KB
MyHandlerActivity$1.class 2KB
MyHandlerActivity$MainActivityHandler.class 1KB
R.class 461B
BuildConfig.class 325B
MyHandlerActivity.class 2KB
R$attr.class 310B
R$id.class 383B
classes.dex 5KB
proguard.cfg 1KB
.settings
org.eclipse.jdt.core.prefs 177B
AndroidManifest.xml 730B
src
com
boao
MyHandlerActivity.java 3KB
project.properties 361B
res
values
strings.xml 184B
layout
main.xml 634B
drawable-ldpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
drawable-mdpi
ic_launcher.png 3KB
drawable-xhdpi
.classpath 475B
gen
com
boao
R.java 783B
BuildConfig.java 150B
assets
共 36 条
- 1
资源评论
- woshiyizhixiaoxiao_82015-11-24学到了很多,感觉不错,能运行
- FallenStart2014-06-07不错,值得下载
零点零一
- 粉丝: 1087
- 资源: 88
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功