Android HandlerThread使用方法详解

 更新时间:2017年10月24日 15:37:59   作者:chuyouyinghe  
这篇文章主要介绍了Android HandlerThread使用方法详解的相关资料,通过本文希望能帮助到大家,让大家掌握理解这部分内容,需要的朋友可以参考下

Android HandlerThread使用方法详解

HandlerThread 继承自Thread,内部封装了Looper。

首先Handler和HandlerThread的主要区别是:Handler与Activity在同一个线程中,HandlerThread与Activity不在同一个线程,而是别外新的线程中(Handler中不能做耗时的操作)。

用法:

import android.app.Activity;  
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Handler.Callback;  
import android.os.HandlerThread;  
import android.os.Message;  
  
  
public class MainActivity extends Activity {  
  HandlerThread handlerThread = new HandlerThread("test");  
  Handler handler;  
    
  @Override  
  protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
    System.out.println("cur_id="+Thread.currentThread().getId());  
      
    handlerThread.start();  
    System.out.println("handlerThread.id=" + handlerThread.getId());  
    //post(runnable),只是直接运行了run(),run()内ThreadId与UIThread是一样的  
//   handler = new Handler();   
    //post(runnable),将runnable运行在handlerThread中,这是非UIThread的  
    handler = new Handler(handlerThread.getLooper(), new Callback() {  
        
      @Override  
      public boolean handleMessage(Message msg) {  
        System.out.println("receive message.whatA=" + msg.what);  
        if (msg.what == 1) {  
          return true;//不再向外层传递  
        } else {  
          return false; //外层的handleMessage() 继续执行  
        }  
          
      }  
    }) {  
      @Override  
      public void handleMessage(Message msg) {  
        // TODO Auto-generated method stub  
        super.handleMessage(msg);  
        System.out.println("receive message.whatB=" + msg.what);  
      }  
    };  
    handler.post(new Runnable() {  
        
      @Override  
      public void run() {  
        System.out.println("handler_post_cur_id="+Thread.currentThread().getId());  
        handler.sendEmptyMessage(1);  
        handler.sendEmptyMessage(2);  
      }  
    });  
      
  }  
  
}  

运行结果:

01-23 07:12:31.590: I/System.out(12386): cur_id=1  
01-23 07:12:31.590: I/System.out(12386): handlerThread.id=1866  
01-23 07:12:31.590: I/System.out(12386): handler_post_cur_id=1866  
01-23 07:12:31.600: I/System.out(12386): receive message.whatA=1  
01-23 07:12:31.600: I/System.out(12386): receive message.whatA=2  
01-23 07:12:31.600: I/System.out(12386): receive message.whatB=2  

如有疑问请留言或到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android调用手机摄像头的方法

    Android调用手机摄像头的方法

    这篇文章主要为大家详细介绍了Android调用手机摄像头的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Android组合式自定义控件实现购物车加减商品操作

    Android组合式自定义控件实现购物车加减商品操作

    这篇文章主要介绍了Android组合式自定义控件实现购物车加减商品操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题

    Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题

    这篇文章主要介绍了Android中解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题 的相关资料,需要的朋友可以参考下
    2016-04-04
  • android 调用JNI SO动态库的方法

    android 调用JNI SO动态库的方法

    android 调用JNI 分为静态调用与动态调用,接下来通过本文给大家介绍android 调用JNI SO动态库的方法,感兴趣的朋友一起看看吧
    2021-11-11
  • Android Intent调用 Uri的方法总结

    Android Intent调用 Uri的方法总结

    这篇文章主要介绍了Android Intent调用 Uri的方法总结的相关资料,这里整理了Android Intent 调用Uri的常用方法,需要的朋友可以参考下
    2017-09-09
  • Android中Intent组件的入门学习心得

    Android中Intent组件的入门学习心得

    Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要,下面这篇文章主要给大家介绍了关于Android中Intent组件的相关资料,需要的朋友可以参考下
    2021-12-12
  • Android仿360市场下载按钮的实现方法

    Android仿360市场下载按钮的实现方法

    这篇文章主要给大家介绍了关于利用Android实现360市场下载按钮效果的方法,文中给出了详细的示例代码供大家参考学习,并在文末给出了源码供大家下载,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-05-05
  • Android ListView 实例讲解清晰易懂

    Android ListView 实例讲解清晰易懂

    这篇文章主要通过实例介绍了Android ListView,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Android使用GridView实现横向滚动效果

    Android使用GridView实现横向滚动效果

    这篇文章主要为大家详细介绍了Android使用GridView实现横向滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android6.0动态申请权限所遇到的问题小结

    Android6.0动态申请权限所遇到的问题小结

    这篇文章给大家介绍了Android6.0动态申请权限所遇到的问题,在没给大家介绍这下问题之前,先给大家说下基本定义和基本使用方式,本文给大家介绍的非常详细,具有参考借鉴价值,对android 6.0 动态权限遇到问题感兴趣的朋友一起看看吧
    2016-11-11

最新评论