Android Handler

Handler 概要

官方文档

Handler 可以发送、处理 Message 和与线程关联的 Runnable 对象 MessageQueue ,每个 Handler 实例都与一个线程和该线程的消息队列关联。创建新的 Handler 时会绑定到 Looper。它将消息和线程传递到该 Looper 的消息队列,并在该 Looper 的线程上执行它们

Handler 两个主要用途:在将来某个时刻执行消息和线程。在不同线程(切换线程)按顺序执行操作

发送方法有 post(Runnable) , postDelayed(Runnable, long), sendMessage(Message) 等 默认通过 handleMessage(Message) 处理接收 Message

Handler、Message、MessageQueue以及Looper

  • Handler 负责发送和处理消息(Handler发送消息给 MessageQueue 和接收 Looper 返回的消息并且处理消息)
  • Message 用来携带需要的数据
  • MessageQueue 消息队列(实际用链表实现的),负责存放 Handler 发送过来 Message
  • Looper 负责不停的从 MessageQueue 中取 Message 交给 Handler 处理

Handler 通过 sendMessage 发送 Message 到 MessageQueue 队列,Looper 通过 loop() 从 MessageQueue 取出 Message,再经过 msg.target.dispatchMessage 交给 Handler 的 handleMessage() 进行处理

Android abiFilter 相关

为了优化apk的大小,一般会只选择支持一种ABI,可以在AS中双击apk,在lib路径下查看so文件占用大小 Android ABI概念 Application Binary Interface 官方文档 cpu

Kotlin 协程

启动协程

launch

启动一个新的线程,在新线程上创建运行协程,不堵塞当前线程,返回一个Job类型的对象

1
2
3
launch {
    //do sth.
}