为了账号安全,请及时绑定邮箱和手机立即绑定

新时代 Android suspender

标签:
Android

webp

我们可以在主线程中,填充我们视图(view inflation)、根据组件的尺寸和位置布局组件(measure + layout)、绘制视图以及一些其他工作,这里就不一一列举了。


webp

请看下图,这就意味着我们想要在 60Hz 的设备上,看到流畅的画面,上诉所有这些的工作就需要在 16 毫秒内完成。


webp

这是看起来是个挑战,但是更大的挑战是在 120Hz 的设备上,这些工作就要在 8 毫秒内完成。

webp

为了这个目标我们需要尽可能地将耗时或可能耗时的工作放在主线程以外的线程来做。执行完毕后再回到主线程。


webp

AsyncTask


所以异步是编写安卓程序必不可少的,说到异步大家都自然会想起 AsyncTask 可能在开始学习Android 时候,我们都会接触到 AsyncTask ,但是在产品级别上的开发上,应该没有人会用他吧。因为他存在许多缺点,例如很难实现对多个异步事件的组合。


webp

executors

Executor 这个大多数的 Java 开发者还是比较熟悉的,背后是共享线程池。但是由于他是比较接近底层的 API,用起来还是不那么方面。




webp

Loader

Loaders 个人对他不算了解,适用范围也是比较有限,不建议大家也不要使用。


webp

Future

Future 在 AndroidX 的 API 中已经被引入,在框架中还是比较常见的。


webp

RxAndroid 库

当然还有许多像 RxAndroid 这样不错的库,让我们轻松地进行异步编程。不过我今天想分享是在 kotlin 1.3 这个稳定版本中提供的新功能 coroutine (协程)。

我们一起需要从实际开发,我们先可以看一看当下我们 app 多数情况都在做什么。


webp

绝大多数我们应用都在做增删改查的工作,可能是操作本地数据,也可能

是通过通络来操作服务端的数据。

实际上我们业务逻辑通常不是那么复杂,需要界面和交互上下更多功夫。

webp

1. 非常适合 I/O 任务,特别是相比台式机和笔记本本身资源相对有限的移

动设备。

2. 在资源有限的设备上,通过创建线程来实现异步,是不划算的。线程

通常会占用 1 到 2 兆的RAM。协程对资源消耗要小得多。

3. 而且便于开发,我们像写同步编程一样一行一行来写异步,无需考虑

一层一层的 callback

webp

webp

1. core 为核心库

2. android 支持 android 主线程

3 何以和 Rxjava 交互

webp

体积大小为 774KB

生成 apk 压缩为 499KB,如果在build使用 minify为true 大小为 113KB

如果继续优化可以达到 99KB

如果用到 proguard 或 R8,就需要在混淆加入下面的代码。

webp

webp



作者:zidea
链接:https://www.jianshu.com/p/4d43a5950425


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消