`
icrwen
  • 浏览: 269502 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

主线程向子线程发送消息

阅读更多

 

public class TestHandler extends Activity {

 

Button m_startbtn ;

Button m_endbtn;

MyThreadHandler m_threadHandler;

 

/** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        System.out.println(Thread.currentThread().getId());

 

        m_startbtn = (Button)findViewById(R.id.start);

        m_startbtn.setOnClickListener(new StartOnClickListener());

     new MyThread().start();

    }

 

 

    class StartOnClickListener implements OnClickListener

    {

 

@Override

public void onClick(View v) {

//在主线程中获取子线程的message对象然后再发送

Message msg = m_threadHandler.obtainMessage(1,1,1,"主线程发消息了");

m_threadHandler.sendMessage(msg);

}

 

    }

 

 

    class MyThread extends Thread

    {

     @Override

     public void run()

     {

    

//创建该线程的Looper对象,用于接收消息 

     Looper.prepare();

//线程的looper创建的handler表示消息接收者是子线程

     m_threadHandler = new MyThreadHandler(Looper.myLooper());

//循环从MessageQueue中取消息。 

     Looper.loop();

     }

    }

 

    class MyThreadHandler extends Handler

    {

     public MyThreadHandler(Looper loop)

     {

     super(loop);

     }

    

     @Override

     public void handleMessage(Message msg)

     {

     super.handleMessage(msg);

//消息处理

     System.out.println("我是子线程的Handler,收到了消息:"+(String)msg.obj);

     }

    

    }

 

 

}

分享到:
评论

相关推荐

    android 主线程给子线程发送消息

    本示例"android 主线程给子线程发送消息"是通过`Handler`机制来实现通信的,这是一个关键的多线程同步技术。 `Handler`是Android中用于在线程间传递消息和调度任务的工具,尤其是主线程与工作线程之间的通信。下面...

    如何从子线程更新主线程数据

    - **消息队列(Message Queue)**:子线程可以通过PostMessage或SendMessage函数向主线程的消息队列发送消息,主线程的窗口消息循环会处理这些消息。 - **共享内存(Shared Memory)**:创建一段共享内存,子线程...

    子线程更新主线程数据

    - Handler: 主线程中的Handler对象可以接收并处理由其他线程(通常是子线程)通过Looper和Message发送的消息。Message对象可以携带数据,这样子线程就可以将数据封装在Message中,然后通过Handler发送到主线程。 -...

    子线程接收主线程发送的消息

    5. **发送消息**:在主线程中,通过之前创建的主线程Handler使用`sendMessage()`或`post()`方法向子线程的Handler发送Message。 6. **处理消息**:子线程的Handler会在其Looper的消息循环中接收到主线程发送的消息...

    Qt子线程更新数据发到主线程显示.rar

    这里我们主要讨论如何在Qt子线程中处理数据并将其安全地发送到主线程,以便在QTableWidget中显示。 首先,我们要明白Qt的线程模型。主线程通常负责处理GUI事件,而子线程则可以执行计算密集型任务。在多线程环境中...

    android主线程、子线程及线程间通信方式测试app

    本文将深入探讨Android主线程(也称为UI线程)、子线程以及它们之间的通信方式,结合"android主线程、子线程及线程间通信方式测试app"的描述,我们将详细分析相关知识点。 1. **Android主线程**:主线程是应用程序...

    子线程和主线程通过handler 双向通信

    我们可以通过Handler的post()或sendMessage()方法向消息队列发送一个Message,然后主线程的Looper会将消息分发给对应的Handler进行处理。 HandlerThread是一个特殊的Thread类,它内部已经初始化了一个Looper。我们...

    QT多线程编程、主线程与子线程交互数据

    QT框架在多线程编程中的应用是现代软件开发中不可或缺的一部分,特别是在处理资源密集型任务或...在实际开发中,需要根据项目需求合理设计线程结构,确保主线程和子线程间的高效协作,同时保证代码的可读性和可维护性。

    子线程操作主线程的示例

    在多线程编程中,子线程与主线程的交互是一个常见的需求,特别是在GUI应用程序中。主线程通常负责用户界面的更新和事件处理,而子线程则用于执行耗时的任务,以避免阻塞UI。本示例将深入探讨如何在Java或C#等支持多...

    Qt5_QThread_信号传递

    由于只有UI主线程才可以操作桌面UI,那么在多线程中,其它线程的数据若要显示出来,可以通过全局共用变量来实现,或者通过线程通信的方式来实现,本例程就是通过UI上的按钮启动线程,在线程中发送信号到UI主线程,并...

    子线程和主线程5种交互方式 Demo

    子线程通过post(Runnable)或sendMessage(Message)方法将任务发送到主线程的MessageQueue,由主线程的Looper取出并执行。 ```java // 主线程初始化Handler Handler handler = new Handler() { @Override public ...

    qt 多线程 防止主线程做循环操作导致界面假死

    为了解决这个问题,我们可以利用Qt提供的多线程机制,将耗时操作转移到子线程执行,以确保主线程能够保持对UI的及时更新。以下将详细讲解如何在Qt中使用多线程防止界面假死,并给出一种有效的方法。 1. Qt中的线程...

    通过窗口传递让主线程触发FIRE事件(子线程不能触发)

    当收到子线程发送的消息时,窗口过程函数(WndProc)会被调用。在这里,可以检查消息类型并执行相应的操作,如触发FIRE事件。 6. **使用ATL或MFC库**: 如果你正在使用ATL(Active Template Library)或MFC...

    Android两个子线程之间的通信

    1. **Handler-Message机制**:这是最常用的一种方式,通过创建Handler对象,一个线程(通常是主线程)注册Handler,另一个线程发送Message到MessageQueue,Handler会接收到Message并处理。这种方式适用于需要在特定...

    子线程创建界面组件

    - **Invoke/PostMessage机制**:在Windows平台上,可以使用`PostMessage`或`Invoke`方法将UI更新请求发送到主线程。 6. **Delphi编程环境中的实践**: - Delphi的VCL(Visual Component Library)库提供了线程...

    android Looper demo

    3. 主线程向子线程发送消息:主线程可以通过创建一个与子线程`Looper`关联的`Handler`来实现这个功能。然而,由于子线程可能没有默认的`Looper`,所以我们需要在子线程内部调用`Looper.prepare()`和`Looper.loop()`...

    子线程控制ProgressDialog的可见性

    在主线程中创建一个Handler,并在子线程中通过这个Handler发送消息来控制ProgressDialog的显示和消失。 以下是实现这一功能的基本步骤: 1. 在主线程中创建一个Handler实例,重写handleMessage()方法,用于处理子...

    android中UI主线程与子线程深入分析

    在Android应用程序开发中,理解和掌握UI主线程与子线程的使用至关重要,...开发者应避免在主线程中执行耗时操作,充分利用子线程和消息机制来保持应用的响应性。熟练掌握这些知识对于编写高质量的Android应用至关重要。

    安卓UI线程和子线程通讯更新UI实例

    在Android应用开发中,UI线程(也称为主线程)负责处理用户交互和绘制界面,而子线程通常用于执行耗时操作,如网络请求、数据处理等。由于Android系统的安全机制,直接在子线程中修改UI是不允许的,因此我们需要通过...

    android主线程和子线程之间消息传递详解

    另一方面,如果需要从非UI线程(子线程)传递消息到主线程,我们可以直接使用已经存在的主线程Looper。在主线程中创建的Handler可以直接用来接收子线程的消息。例如,在`ThreadHandlerActivity`中,我们创建了一个...

Global site tag (gtag.js) - Google Analytics