如何防止服务在完成工作之前被销毁?我正在使用 WakefulIntentService以确保设备在工作完成时不会睡着。但我不确定这是否有效。在一个特定的地方,我正在创建一个 MediaPlayer 来播放声音,但是在工作了几次之后,我开始收到关于线程已死的异常,并且查看日志我看到在媒体播放器之前调用了该服务的 onDestruct 函数有机会完成它的工作。
最佳答案
In one particular place I'm creating a MediaPlayer to play a sound
任何形式的IntentService
都不适合那个场景。 IntentService
在 onHandleIntent()
返回后被销毁(或者,在 WakefulIntentService
的情况下,当 doWakefulWork()
返回)。不要在 IntentService
中做任何会持续到 onHandleIntent()
调用之后的事情。
相反,使用常规的 Service
,您可以在其中管理自己的 WakeLock
,在媒体播放完成时释放它并停止服务(通过 OnCompletionListener
)。
(而且,FWIW,我会推荐 JobIntentService
而不是我的 WakefulIntentService
,对于唤醒 IntentService
是合适的解决方案的场景)
关于android - 如何防止服务在完成工作之前被销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268141/