--- by Guokun.hou
近期开发了一个Music播放类应用,开发及解决问题的过程中对于remotecallbacklist的用法有一些小小体会,特地写出来供参考;
该应用提供了一个后台服务:MediaPlaybackService,它主要用于应用切换至后台时播放音乐。这个服务MediaPlaybackService提供了接口setPlayCallback( IMusicCallback callback),它用于回调更新播放进度。例如:当某个Activity绑定该服务时,通过这个方法注册接口。这样,当Music在播放时,该Activity可以不断更新播放的信息。测试过程中发现Bug:Music应用的在不同播放页面切换时,回到主页面时,播放时间便不再更新了!
经过分析,MediaPlaybackService的setPlayCallback方法只保留一个IMusicCallback的实例,即:最近注册的IMusicCallback接口。所以,当有多个Activity绑定服务时,最近的Activity注册的接口才会被回调更新播放信息。根据这个原因想到解决方法:在不同Activity切换时,我们在每个Activity的onResume()或onStart()方法中重新注册该接口。这样,最新打开的Activity总能保证被更新UI。
接下来又遇到一个新的情况:锁屏界面下,播放音乐需要调用Music应用的播放服务MediaPlaybackService,虽然该服务提供了跨