小编wor*_*Ben的帖子

有时MediaPlayer prepareAsyc()在按下POWER之前不会调用onPrepared()

我一直试图重现我的QA团队称之为"随机暂停错误"一段时间.今天,我在使用logcat进行调试时再现了三次.它间歇性地出现,仅在网络较差的情况下出现.

用户体验音频暂停,直到他们触摸他们的电话(按电源或轨迹球)并立即开始播放.这是因为我在onPrepared回调中调用start,并且在这些情况下从不调用start.这是我们最严重的错误.

我知道的:

1)在2.2.1的Nexus One上间歇性地发生这种情况(不确定它是否在其他设备上)

2)当设备屏幕关闭时,我从PlaybackService调用prepareAsyc().有时,onPrepared()永远不会被调用,因此我的后续mediaplayer.start()调用永远不会被触发.我可以看到网络嗅探器和缓冲回调缓冲正在发生.

3)如果我触摸设备电源或轨迹球将其唤醒,立即调用onPrepared()(已经缓冲)并且我的回调开始播放.

以下是带有时间戳的日志,显示问题三次:

第一个例子(在我按下电源按钮之前20秒没有回调):

11-10 16:10:55.966 I/AwesomePlayer(   59): calling prefetcher->prepare()
11-10 16:11:15.511 D/KeyguardViewMediator(   94): wakeWhenReadyLocked(26)
11-10 16:11:15.511 D/KeyguardViewMediator(   94): handleWakeWhenReady(26)
11-10 16:11:15.511 D/KeyguardViewMediator(   94): pokeWakelock(5000)
11-10 16:11:15.511 I/power   (   94): *** set_screen_state 1
11-10 16:11:15.561 D/SurfaceFlinger(   94): Screen about to return, flinger = 0x1fe300
11-10 16:11:15.701 D/AK8973  (   64): Compass Start
11-10 16:11:15.701 D/WifiService(   94): ACTION_SCREEN_ON
11-10 16:11:15.711 I/Prefetcher(   59): [0x602d80] cache below low water mark, filling cache.
11-10 16:11:15.821 I/AwesomePlayer(   59): prefetcher is done …
Run Code Online (Sandbox Code Playgroud)

android

7
推荐指数
1
解决办法
952
查看次数

标签 统计

android ×1