HandlerThread知识点整理

HandlerThread

HandlerThread本质上就是一个普通Thread,只不过内部建立了Looper.

  1. HandlerThread拥有自己的消息队列,它不会干扰或阻塞UI线程
  2. 对于网络IO操作,HandlerThread并不适合,因为它只有一个线程,还得排队一个一个等着

Handler常规用法

        //创建一个线程,线程名字:handler-thread
        myHandlerThread = new HandlerThread( "handler-thread") ;
        //开启一个线程
        myHandlerThread.start();
        //在这个线程中创建一个handler对象
        handler = new Handler( myHandlerThread.getLooper() ){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                //这个方法是运行在 handler-thread 线程中的 ,可以执行耗时操作
                Log.d( "handler " , "消息: " + msg.what + "  线程: " + Thread.currentThread().getName()  ) ;

            }
        };

        //在主线程给handler发送消息
        handler.sendEmptyMessage( 1 ) ;

        new Thread(new Runnable() {
            @Override
            public void run() {
             //在子线程给handler发送数据
             handler.sendEmptyMessage( 2 ) ;
            }
        }).start() ;

参考链接

  1. https://www.cnblogs.com/zhaoyanjun/p/6062880.html
  2. https://blog.csdn.net/u011240877/article/details/72905631

你可能感兴趣的:(HandlerThread知识点整理)