我们可以在主线程中,填充我们视图(view inflation)、根据组件的尺寸和位置布局组件(measure + layout)、绘制视图以及一些其他工作,这里就不一一列举了。
图请看下图,这就意味着我们想要在 60Hz 的设备上,看到流畅的画面,上诉所有这些的工作就需要在 16 毫秒内完成。
图这是看起来是个挑战,但是更大的挑战是在 120Hz 的设备上,这些工作就要在 8 毫秒内完成。
为了这个目标我们需要尽可能地将耗时或可能耗时的工作放在主线程以外的线程来做。执行完毕后再回到主线程。
AsyncTask所以异步是编写安卓程序必不可少的,说到异步大家都自然会想起 AsyncTask 可能在开始学习Android 时候,我们都会接触到 AsyncTask ,但是在产品级别上的开发上,应该没有人会用他吧。因为他存在许多缺点,例如很难实现对多个异步事件的组合。
executorsExecutor 这个大多数的 Java 开发者还是比较熟悉的,背后是共享线程池。但是由于他是比较接近底层的 API,用起来还是不那么方面。
LoaderLoaders 个人对他不算了解,适用范围也是比较有限,不建议大家也不要使用。
FutureFuture 在 AndroidX 的 API 中已经被引入,在框架中还是比较常见的。
RxAndroid 库当然还有许多像 RxAndroid 这样不错的库,让我们轻松地进行异步编程。不过我今天想分享是在 kotlin 1.3 这个稳定版本中提供的新功能 coroutine (协程)。
我们一起需要从实际开发,我们先可以看一看当下我们 app 多数情况都在做什么。
绝大多数我们应用都在做增删改查的工作,可能是操作本地数据,也可能
是通过通络来操作服务端的数据。
实际上我们业务逻辑通常不是那么复杂,需要界面和交互上下更多功夫。
1. 非常适合 I/O 任务,特别是相比台式机和笔记本本身资源相对有限的移
动设备。
2. 在资源有限的设备上,通过创建线程来实现异步,是不划算的。线程
通常会占用 1 到 2 兆的RAM。协程对资源消耗要小得多。
3. 而且便于开发,我们像写同步编程一样一行一行来写异步,无需考虑
一层一层的 callback
1. core 为核心库
2. android 支持 android 主线程
3 何以和 Rxjava 交互
体积大小为 774KB
生成 apk 压缩为 499KB,如果在build使用 minify为true 大小为 113KB
如果继续优化可以达到 99KB
如果用到 proguard 或 R8,就需要在混淆加入下面的代码。
网友评论