Android中主线程给子线程发Message

在Android开发中我们也许常在想主线程如何给子线程发Message?

这是一个很好玩的话题通常我们都是在 Activity 中,让子线程执行耗时任务,执行完之后给主线程发送消息让主
线程更新UI。其实还有很多应用场景需要让主线程给子线程发送消息,该消息作为任务的载体,比如在IntentService
中,主线程就给子线程发送了消息,让子线程干活。
给大家写个Demo演示主线程给子线程发送消息。

java
1. package com.yange.message2subthread;
2.
3. import android.os.Bundle;
4. import android.os.Handler;
5. import android.os.Looper;
6. import android.os.Message;
7. import android.util.Log;
8. import android.view.View;
9. import android.app.Activity;
10. . /**
14. * 演示主线程给子线程发送Message
15. . */
16. public class MainActivity extends Activity {
17. private Handler mMySubHandler;
18.
19. @Override
20. protected void onCreate(Bundle savedInstanceState) {
21. super.onCreate(savedInstanceState);
22. setContentView(R.layout.activity_main);
23. }
24. @Override 26. protected void onStart() {
25. super.onStart();
26. /**
27. * 当Activity启动的时候创建一个子线程,并启动
28. */
29. MyThread thread = new MyThread();
30. thread.start(); 33. }
31. /**
29. * 绑定布局中的点击按钮,点击后给子线程发送消息
30.
* @param view
* */
* public void click(View view){
* Message msg = new Message();
* msg.obj = “MainActivity”;
* mMySubHandler.sendMessage(msg);
* }
* /**
* * 绑定布局文件中的按钮2,点击后让子线程退出,关闭子线程
* * 其实这里只需要让子线程的Looper对象退出即可,因为Looper.loop();是线程阻塞的.
* * @param view
* */
* public void click2(View view){
* if (myLooper!=null) {
* myLooper.quit();
* }
}
/**
* 将Looper对象声明为成员变量
* */
* private Looper myLooper;
* @Override
* protected void onDestroy() {
* super.onDestroy();
* /* 62. 在退出的时候,将子线程释放掉,不然可能会导致内存泄露
* */
* if (myLooper!=null) {
* myLooper.quit();
* }
* }
* class MyThread extends Thread{
*
* @Override
* public void run() {
* //1. 创建一个Looper对象(内部创建了MessageQueue,并将MessageQueue作
* 为Looper对象的成员,然后将Looper对象绑定到ThreadLocal中)
* Looper.prepare();
* /**
* * 创建一个Handler
* */
* mMySubHandler = new Handler(){
* @Override
* public void handleMessage(android.os.Message msg) {
* //处理主线程发送的消息
* Log.d(“tag”, “接收到信息”+msg);
* };
* };
* //2. 获取当前Looper对象
* myLooper = Looper.myLooper();
* //3. 让消息循环起来
* Looper.loop();
* Log.d(“tag”,”子线程退出”);
* }
* }
*
* }
*

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuHai2014csd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值