android 中的HandlerThread包含了android中的消息处理机制必须的looper,当你启动这个线程的时候,就会闯进looper,并开启消息处理的循环。

跟其它线程一样,HandlerThread是可不可以直接stop掉的,不过经过本人测试,你可以调用:getLooper().quit();来退出这个线程,其实原理很简单,就是改变在消息循环里面标志位,退出整个while循环,使线程执行完毕。

部分 测试代码如下:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);setContentView(R.layout.main);tv_name = (TextView) findViewById(R.id.tv_name);btn_name = (Button) findViewById(R.id.btn_name);Log.i(TAG, "==================main thread:" + Thread.currentThread().getName());final HandlerThread thread = new HandlerThread("handlerThread");thread.start();final MyHandler handler = new MyHandler(thread.getLooper());btn_name.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {handler.sendEmptyMessage(1);try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}thread.getLooper().quit();}});}class MyHandler extends Handler {public MyHandler(Looper looper) {super(looper);}@Overridepublic void handleMessage(Message msg) {Log.i(TAG, "==================" + Thread.currentThread().getName());//tv_name.setText("hello, this is the first message from handler");super.handleMessage(msg);}}

不过要注意:要想更新界面内容,还是需要使用界面的Looper,不然的话还是会抛错误,还是那句话,所有跟改变界关的操作,都得通过界面的Looper来执行

更多相关文章

  1. 讨论会3:Android用户研究及4.0界面设计分析
  2. AsyncTask使用和源码解析
  3. 《Android学习指南》文件夹
  4. Android对弹出输入法界面影响app界面布局
  5. android零碎要点---android开发者的福音,59_1 Android的界面设计
  6. android学习小结2
  7. Android(安卓)Hello World
  8. 学习 Android(安卓)Handler 消息机制需要注意这些问题!
  9. android学习小结2

随机推荐

  1. android应用程序组件之间的通讯
  2. IDE不对更新android studio后出现Please
  3. Android(安卓)7.0新特性总结
  4. Android进程间通信之7——Binder框架
  5. adb:) adb push、pull、logcat and etc
  6. SQLite数据库总结
  7. 关于在as上启动虚拟机时发生问题的解决
  8. Android(安卓)TextView中字体行间距的设
  9. Android PopupWindow 隐藏软键盘的方法
  10. Android模仿乐淘的应用程序分析源码