更高级的 Android 启动任务调度库

之前的文章中,我介绍了自研的 Android 启动任务调度工具 AndroidStartup。近期,因为在组件化项目中运用该项目的需要,我对这个库做了一番升级。在最新的 2.2 版本中,我新增了一些特性。相比于目前市面上其他的启动任务调度库,使其具备了更多的优势。这里我只介绍下经过新的版本迭代之后该项目与其他项目的不同点。对于其基础的实现原理,可以参考我之前的文章 《异步、非阻塞式 Android 启动任务调度库》

1、支持多种线程模型

这是相对于 Jetpack 的启动任务库的优势,在指定任务的时候,你可以通过 ISchedulerJobthreadMode() 方法指定该任务执行的线程,当前支持主线程(ThreadMode.MAIN)和非主线程(ThreadMode.BACKGROUND)两种情况。前者在主线程当中执行,后者在线程池当中执行,同时,该库还允许你自定义自己的线程池。关于这块的实现原理可以参考之前的文章或者项目源码。

2、非阻塞的任务调度方式

在之前的文章中也提到了,如果说采用 CountDownLatch 等阻塞的方式来实现任务调度,虽然不会占用主线程的 CPU,但是子线程会被阻塞,一样会导致 CPU 空转,影响程序执行的性能,尤其启动的时候大量任务执行时的情况。所以,在这个库的设计中,我们使用了通知唤醒的方式进行任务调度。也就是,

首先,它会将所有的需要执行的任务收集起来;然后,它会根据任务的依赖关系指定分发和调度任务的子任务;最后,当当前任务执行完毕,该任务会通知所有的子任务按照顺序执行。大致实现逻辑如下

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值