00:00
好的,我们继续啊,那在做完这个切换歌曲的功能,哎,以后呢,我们回头啊,咱们再看一下这个播放歌曲的功能。好的,那这个时候呢,我们重新加载一下我们的应用啊,来到练习这个里面,嗯。好,那这个时候啊,来到练习里边,大家看着啊,上来音乐没有播放。那么当我们点击要播放的时候,你看啊。他是不是要发请求?去拿对应的音乐链接呀。哎,没有问题,那我点击一个暂停。那这个时候打卡,我并没有切换歌曲。嗯,在我们当前的页面里面呢,我们还是刘德华这首练习对吧,那这个时候呢,你想一下啊,之前我们都拿过一次当前这个歌曲的链接了,那么假如说啊,用户点再次点击播放,你觉得有没有必要再发请求拿链接?啊,这是我们要思考的一个问题。
01:00
啊,那答案呢,应该是不需要的啊,因为我们有了,即使说再发电,再发请求。拿到的是同样的链接呀。好的,那但是呢,我们现在的项目大家看一下,我暂点播放又放一次,我暂停,我再播放又一次。但每次发的请求一模一样。对吧,啊,那这就是问题啊,那这个问题呢,就是说我们会重复的发多次啊无用的请求。那么我们来到我们的代码里面看一下啊。来到我们的detail啊,在我们当前的这个。代码里面啊,我们是点击播放和暂停的回调。在这个里面呢,我们是不是去调用了一下这个控制音乐播放和暂停的功能函数呀,就是它。而我们发起球的动作呢,在这里。对吧。嗯,那现在是只要我调用它去播放,我们就叫走if,然后就去发请求,我们完全没有考虑到之前有没有这个音乐链接。
02:08
对吧,没有考虑到之前有没有音乐链接。那根据我们刚才的分析啊,如果说在同一首歌之前有音乐链接的话,那么这一次呢,干脆就不需要发了。对不对,哎,那干脆这样啊,大家看我怎么写我呢。把这个呢,提取成型仓。提取时行参的目的呢,是你谁调用我,谁给我传入十参,对吧,那干脆就是你调我,你告诉我。如果你给我音乐链接了,那么我就不发请求了,如果你不给我,我就发请求呗。哎,那这个时候呢,看我怎么做。因为这声声明了一个行参啊,那我这儿呢,就如果说第一次进来啊,假如说他没有音乐链接,那么进来,哎,我会做这样一个操作。来把这个拿走啊,我们去判断一下,如果说啊第一次啊,没有这个music link,嗯,那我们就去发请求拿链接。
03:11
拿到链接呢,我还可以做一个事情啊,因为我拿到一次链接了啊,为了下次不发请求呢,我可以把这个链接呢存到贝卡中啊,那这个呢是音乐的链接。链接啊。链接来。好的啊,那我在data中呢,初始化了一个,那假如说我们第一次发起就拿到了音乐的链接,那么干脆呢,我就把它更新到我们的。贝塔中北。那再一次发请求,哎,你如果说哎,你确定了,哎我之前贝塔如呢有当前音乐的链接,那你把这个音乐链接给我不就行了吗?那这样的话呢,是不是就不走一判断了。哎,不走它那就往下走呗。哎,正常使用你传进来的链接不就可以了吗。好,那这样的话啊,大家看我们之前点击播放和暂停的时候啊,那在这呢,我从data中呢,把这个music link呢也给它解构出来。
04:08
然后在我们调用这个功能函数的时候呢,给它作为时差注入。那这个时候啊,来来到我们的项目里面,还是来到练习这。我们点击进来。好的,那这个时候呢,来到APP data啊,大家看一下我们初始化的music link是不是为呀。为空串的话,也就是说我们第一次走到这儿,传的是被一个空串。那么空串进来以后呢,是不是哎为false呀,然后一学法是不是能进这个if条件判断呀。所以说第一次进来肯定会发请求。对吧,来,我们过来看一下是不是这样的。先来到network啊,把这个听一下。走。播放。没有问题,打卡发请求了,来,我先暂停一下。那这个时候呢,我们来到APP中。大家看一下,因为我们发起球拿了一次music link,所以呢,在我们的data中是不是就有了呀?
05:06
那为什么有呢?是因为刚才我们在这是不是塔一下没有问题,那么假设啊,我在当前的基础上。我再点播放,这个时候我们传入的什么,这个有值的music。对不对。哎,因为它有值,那么他能进这个判断吗?进不了,所以是不是就不需要发起球直接用之前的呀。嗯,那这个时候啊,我们看一眼。来到network来把这个清掉,我再点播放走。首先啊,我把音乐打开。大家看音乐是可以正常播放的,没有问题,然后啊,我把音乐关掉啊,那现在呢,我们发起行了吗。并没有,那说明我们就成功了。好的,那这个呢,是点击播放。啊。按钮的时候,我们做了一个性能优化,那么我们在想啊,那我们切割的时候,哎,我们切割的时候呢,在这里呢,我们也调用了一次这个music control这个功能函数,那这个时候。
06:11
哎,我们想想啊,这个时候呢,我们要不要像之前一样把music传进去。要不要传?注意啊,这个时候呢,就不能传了,如果传你是不是还是当前月的链接啊。那这样的话,他始终无法播放最新的音乐。我们切割的目的很明显,就是要切换到新的歌曲嘛,所以这个时候我们故意不传music link。也是第三个参数不传,那么不传的话你再看啊,这是不是相当于是安范呀,Anti范肯定要取反进来吧,进来以后发请求。来,那这样的话呢,我们看一下啊。我把音乐把声音打开啊,我们现在去切歌,看看他发不发请求,走。哎,发了对吧,来请教我再走你看啊,一个是拿歌曲详情,一个是拿音乐链接。
07:04
嗯,而且呢,音乐播放的也是对的。没有问题。哎,那这样的话呢,我们就是其实利用了一个。控制一个什么函数的参数。对吧,我传与不传,或者怎么传来决定我们要不要发请求啊,其实这样的话呢,我们没有借助过多的变量去解决这个问题啊。最终呢,达到了我们这个性能优化的目的啊好的,那这一节课呢,我们先讲到这里。
我来说两句