DSAppTeam / Anchors

:white_check_mark: Anchors 是一个基于图结构,支持同异步依赖任务初始化 Android 启动框架。其锚点提供 "勾住" 依赖的功能,能灵活解决初始化过程中复杂的同步问题。参考 alpha 并改进其部分细节, 更贴合 Android 启动的场景, 同时支持优化依赖初始化流程, 自动选择较优的路径进行初始化。
Apache License 2.0
820 stars 79 forks source link

考虑一些场景,可能需要在主线程做初始化动作,能否支持MessageQueue.IdleHandler? #25

Closed HongdouHub closed 3 years ago

HongdouHub commented 3 years ago

有些初始化需要保证在主线程初始化,可以再等主线程空闲下来的时候做初始化(启动优化),能否考虑支持接入一些类似MessageQueue.IdleHandler的方案?

YummyLau commented 3 years ago

@HongdouHub 目前正常在Looper排队即可,如果在IdleHandler处理反而可能遇到复杂的绘制场景导致依赖一直在等待,这个是不可控的。

HongdouHub commented 3 years ago

如果考虑复杂的绘制场景,在首页没有绘制完,理论上也不支持用户操作才对。

@HongdouHub 目前正常在Looper排队即可,如果在IdleHandler处理反而可能遇到复杂的绘制场景导致依赖一直在等待,这个是不可控的。

YummyLau commented 3 years ago

@HongdouHub 是不支持操作的。因为目前初始化动作不仅仅只是一个runnable,是一条链,多个消息穿插系统的Message排队处理。如果集中某个idel场景下初始化,后续runnable依然需要排队,如果合并在某个idel场景初始化,可能对后续系统的Message有一定干扰。 或者您有更好的建议或者pr也可以讨论下。

YummyLau commented 3 years ago

Idle可能会导致业务死锁。