`
寻梦者
  • 浏览: 635570 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

如何关闭android中的HandlerThread

阅读更多

       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() {
			
			@Override
			public 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);
		}

		@Override
		public 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来执行

 

 

分享到:
评论

相关推荐

    Android HandlerThread 全面解析

    `HandlerThread`是Android中的一个内置类,它继承自`Thread`,并添加了`Looper`和`Handler`的支持。通常,当我们需要创建一个新的工作线程来处理耗时任务时,需要手动初始化`Looper`和`Handler`,而`HandlerThread`...

    Android实例HandlerThread源码分析

    本篇文章主要给大家通过实例代码分析了Android中HandlerThread的用法以及步骤,需要的朋友参考学习下吧。

    android HandlerThread 实例

    在Android开发中,`HandlerThread` 是一个非常重要的组件,特别是在处理异步任务和线程通信方面。`HandlerThread` 是一个内置了Looper的线程,它可以为长时间运行的任务提供一个独立的消息处理循环,避免阻塞主线程...

    android HandlerThread 使用demo

    在Android开发中,`HandlerThread` 是一个非常重要的线程管理工具,它结合了线程和消息处理机制,常用于创建后台线程处理耗时任务,以避免阻塞主线程,提升用户体验。本示例("android HandlerThread 使用demo")将...

    HandlerThread的使用与自定义HandlerThread

    在Android开发中,`HandlerThread` 是一个非常重要的组件,尤其在处理异步任务和线程间通信时。本文将深入探讨 `HandlerThread` 的使用、工作原理,并讲解如何自定义 `HandlerThread`,以及为什么在某些场景下我们...

    实例分析Android中HandlerThread线程用法

    其本质就是一个线程,但是HandlerThread在启动的时候会帮我们准备好一个Looper,并供外界使用,说白了就是使我们在子线程中更方便的使用Handler,比如没有HandlerThread我们要在子线程使用Handler,写法如下: ...

    Android-kotlin实现网络请求库

    3. **HandlerThread**: 在Android系统中,主线程负责处理用户交互,不能进行耗时操作,否则会导致界面卡顿。HandlerThread是一种轻量级的线程,主要用于后台任务的执行。它内部维护了一个Looper,可以接收并处理...

    HandlerThread

    在Android应用开发中,HandlerThread通常用于执行耗时操作,如网络请求、数据库操作或复杂的计算,而不阻塞UI线程。 1. **创建与启动HandlerThread** 创建HandlerThread非常简单,只需要实例化HandlerThread并调用...

    Android HandlerThread使用方法详解

    Android HandlerThread 是 Android 中的一种线程机制,它继承自 Thread,并且内部封装了 Looper。HandlerThread 的主要用途是将耗时操作从主线程中抽离出来,避免阻塞主线程,提高应用程序的响应速度。 ...

    Android HandlerThread的使用及原理详解

    在Android开发中,`HandlerThread` 是一个非常重要的组件,它结合了线程(Thread)和消息处理(Handler)的功能,使得开发者可以在后台线程中高效地处理异步任务,尤其是那些需要定时或周期性执行的操作。...

    深入Android HandlerThread 使用及其源码完全解析

    HandlerThread是Android系统提供的一种线程管理工具,它在Android应用程序开发中扮演着重要的角色,尤其是在处理长时间运行的任务和保持线程的持续性方面。在Android的消息机制中,Handler、MessageQueue和Looper三...

    Android用HandlerThread模拟AsyncTask功能(ThreadTask)

    HandlerThread是Android提供的一个线程类,它创建了一个 Looper 对象,使得我们可以在子线程中通过Handler发送和处理消息。 下面我们将详细探讨如何使用HandlerThread实现类似AsyncTask的行为,并提供相关的实例...

    Android:Handler学习实例2(HandlerThread、Bundle传递参数)

    HandlerThread handlerThread = new HandlerThread("handler_thread"); //在使用HandlerThread的getLooper()方法之前,必须先调用该类的start()方法,否则获得的值为空值; handlerThread.start(); //创建...

    handlerthread学习demo

    在Android开发中,`HandlerThread` 是一个非常重要的组件,特别是在处理异步任务和线程同步方面。`HandlerThread` 是一个内置了消息队列和Looper的线程,它的主要作用是提供一个稳定的、可控制的后台执行环境,用于...

    android使用handlerthread创建线程示例

    本文将深入探讨如何使用`HandlerThread`在Android中创建线程,以及为什么相较于直接使用`Thread`类,`HandlerThread`更具有优势。 首先,让我们理解一下`Thread`类的基本使用。通常,我们可以通过创建一个新的匿名...

    Looper、Handler与HandlerThread

    在Android开发中,Looper、Handler和HandlerThread是三个非常重要的组件,它们构成了Android消息处理机制的基础,用于在主线程中处理来自其他线程的消息。理解并熟练运用这三个组件,对于编写高效、响应迅速的...

    Android线程,线程池,AsyncTask,HandlerThread和IntentService的用法

    在Android开发中,多线程处理是至关重要的,因为它允许我们执行耗时操作而不阻塞主线程,确保用户界面的流畅。以下是对Android线程、线程池、AsyncTask、HandlerThread和IntentService的详细解释。 1. **Android...

Global site tag (gtag.js) - Google Analytics