之前研究过handler 和 looper 消息队列,不过android里的handler不是另外开启线程来执行的,还是在主UI线程中,如果想另启线程的话需要用到HandlerThread来实现。在使用HandlerThread的时候需要实现CallBack接口以重写handlerMessage方法,在handlerMessage方法中来处理自己的逻辑。下来给出一个小例子程序。
layout文件很简单,就一个按钮来启动HanlderTread线程
Activity代码如下:
点击按钮,打印的日志如下(这里点击了3次)
07-06 09:32:48.776: I/System.out(780): onCreate CurrentThread = main
07-06 09:32:55.076: I/System.out(780): handleMessage CurrentThread = myHanler
07-06 09:32:58.669: I/System.out(780): handleMessage CurrentThread = myHanler
07-06 09:33:03.476: I/System.out(780): handleMessage CurrentThread = myHanler
HandlerThread就这么简单。
当然 android自己也有异步线程的handler,就是AsyncTask,这个类就是封装了HandlerThread 和handler来实现异步多线程的操作的。
分享到:
相关推荐
《Android编程经典200例》是一本深受开发者欢迎的书籍,它涵盖了Android应用程序开发的各种实践案例,旨在帮助读者深入理解和掌握Android平台的编程技术。这个压缩包包含了书中所有200个实例的源代码,是学习和研究...
- **启动**: 通常使用`new Thread()`或`HandlerThread`创建新线程。 - **挂起**: 通过线程同步机制实现,如`wait()`和`notify()`。 - **停止**: 通常需要设计退出标志,避免野蛮中断线程导致资源泄漏。 #### 五、跨...
在Android中,可以使用synchronized关键字、wait()、notify()和notifyAll()方法,以及Java提供的Semaphore、CountDownLatch等并发工具类实现线程同步。 四、IntentService IntentService是一种单线程服务,用于执行...
本主题将深入探讨如何在Android中实现线程间通信,并以显示同步时间为例,展示具体的操作流程。 首先,Android系统是基于单线程模型的,主线程(也称为UI线程)负责处理用户交互和更新UI。由于Android对主线程有...
可以使用Handler、ScheduledExecutorService或者Android的HandlerThread来实现。 通过以上步骤,我们可以创建出具有独特功能和外观的自定义View,例如本例中的实时小时钟。这种自定义视图不仅能够提升应用的用户...
但随着Android版本的升级,`AsyncTask`在处理大量并发任务时可能表现不佳,因此在现代Android开发中,通常会考虑使用其他异步库,如`HandlerThread`、`Loader`或者更现代的`LiveData`和`ViewModel`结合`Coroutines`...
7. **ExpandableAdapter**:在Android中,如果使用了可扩展的ListView(ExpandableListView),则需要自定义ExpandableAdapter,将数据绑定到ListView。在`updateUI()`方法中调用`notifyDataSetChanged()`,通知...
为了在非UI线程执行数据库操作,我们可以使用Android的`AsyncTask`或`HandlerThread`。这里我们使用`AsyncTask`为例: ```java public class DatabaseManager { private static final class DatabaseTask extends...
可以使用AsyncTask、IntentService、HandlerThread或者Java的ExecutorService。这里我们以AsyncTask为例。 3. **AsyncTask的使用**: - 创建一个继承自AsyncTask的类,定义三个泛型参数:Params, Progress, Result...