Ahm*_*tsh 19 android kotlin kotlin-flow
\n\n\n由于launchWhenStarted和repeatOnLifecycle(STARTED)提供完全不同的功能(launchWhenStarted暂停协程的执行,而repeatOnLifecycle取消并重新启动新的协程),如果新API的名称相似(例如,使用launchWhenever作为重新启动的API) ,开发人员可能会感到困惑,甚至在没有注意到的情况下互换使用它们。
\n
什么时候使用哪个更简单的解释是什么?
\nPaw*_*wel 38
launchWhenStarted
只是一次性的延迟。
repeatOnLifecycle
创建一个挂起点,充当处理程序,每次生命周期进入提供状态时运行提供的块,并在其低于提供状态时取消它(因此STARTED
它在停止时发生)。
更新:
请注意,launchWhenStarted
API 现已弃用,因为它可能会导致工作长时间挂起。
目前,对于一次性延迟,建议使用lifecycleScope.launch()
一项新作业并使用withStarted{ }
其中的方法来导致暂停,直到达到启动状态。
弃用和替换的详细说明在此google tracker issues中。
repeatOnLifecycle
每次重复时从头开始重新启动其协程,并在每次生命周期低于指定状态时取消它。它非常适合收集大多数流,因为当不需要流时,它会完全取消流,从而节省与继续发出值的流相关的资源。
launchWhenX
does\xe2\x80\x99t 取消协程并重新启动它。它只是在启动时推迟,并在低于指定状态时暂停执行。他们计划弃用这些函数,但我怀疑如果这样做,则需要进行一些替换,因为您正在调用一些耗时的挂起函数,然后想要在它\xe2\x80\x99s完成时执行某些操作,例如启动片段交易。repeatOnLifecycle
这样做会导致重做耗时的操作。
归档时间: |
|
查看次数: |
16600 次 |
最近记录: |