HandlerThread分线程启动handler

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
 
public class MainActivity extends Activity{
 
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 打印UI线程的名称
        System.out.println("onCreate  CurrentThread = "
                + Thread.currentThread().getName());
 
        setContentView(R.layout.activity_main);
 
        // 实现了使用Looper来处理消息队列的功能
        HandlerThread handler = new HandlerThread("handler_Thread");
        handler.start();
        MyHandler myHandler = new MyHandler(handler.getLooper());
        Message msg = myHandler.obtainMessage();
        msg.obj = "abc";
        Bundle data = new Bundle();
        data.putString("title", "你好吗");
        data.putString("info", "哈哈哈哈");
        msg.setData(data);
        // 将msg发送到对象,所谓的目标对象就是生成该msg对象的Handler对象
        msg.sendToTarget();
 
    }
 
    class MyHandler extends Handler {
        public MyHandler() {
 
        }
 
        public MyHandler(Looper looper) {
            super(looper);
        }
 
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            String s = (String) msg.obj;
            Bundle data = msg.getData();
            String title=data.getString("title");
            String info=data.getString("info");  
            System.out.println("title is " + title + ", info is" + info); 
            System.out.println("msg.obj is " + s); 
            System.out.println(Thread.currentThread().getId());
            System.out.println("handlerMessage");
        }
 
    }
}

  HandlerThread继承与Thread,所以本身就是一个线程。他类似于创建了一个含有Looper对象的线程类,而Looper可以用于创建Handler类,这样我们就不用自己实例化Looper对象,调用preare和Loop了,而是直接调用HandlerThread。与普通的Thread相比,就是多了Looper对象。

posted on   南瓜饼  阅读(673)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2012年10月 >
30 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10
点击右上角即可分享
微信分享提示