今天在听一个T10的答辩,其中有一个理念让我觉得很有意思,记录一下。
背景:
下载视频业务层均使用Service,同一个下载任务只能对应一个播放行为。
如果两个业务按照如下顺序下载同一个视频,就会出现问题:
最初听到这个问题,我第一想到的方案是代码控制时序,在业务B前检查业务A,保证调用业务B时,A的业务已经停掉了。
但这样的处理方式仅仅是为了解决当前问题给出的方案,如果后续有业务C、业务D也遇到类似的情况,那还是需要特殊处理。
答辩的同学给出的一个方案很简单,但很有意思:
它对播放器做了引用计数的逻辑,只有引用计数归零了,才会彻底移除下载任务。
引用计数我们熟记于心,但能想到用这种方案处理问题的,我觉得很牛逼。