AsyncTask在背景上停止

时间:2014-08-29 08:34:06

标签: android background android-asynctask

我正在构建用于收听acc流的应用。我正在使用这个库: https://code.google.com/p/aacdecoder-android/

尤其是这名球员。

PlayerCallback clb = new PlayerCallback() { ... };
MultiPlayer aacMp3Player = new MultiPlayer( clb );
aacMp3Player.playAsync( "http://..." ); // URL of MP3 or AAC stream

它在AsyncTask中播放,但是当你将应用程序放到背景播放时停止播放时会出现一些小问题。 只有在methond onDestroy中才能停止AsyncTask,而不是onPause或oStop。

任何人都知道为什么玩家会停止?

1 个答案:

答案 0 :(得分:0)

简短回答:音乐流媒体应用需要运行服务以避免被Android终止。

在更便宜的设备上或当内存资源不足时,Android会在进入后台或需要更多内存时立即终止进程。这可能解释了为什么它只发生在你提到的“一些智能手机”上。您还可以进入手机上的“开发者选项”,然后使用“不要保持活动”和“后台进程限制”设置来模拟同样的事情。

如果Android不是前台at this link here中的有效应用,您可以详细了解Android如何优先处理终止进程和活动。您将会看到,服务的优先级高于后台进程(例如,用户退出的活动,但仍有正在运行的线程)。

在我的音乐流媒体应用中,当音乐开始时,我启动一项服务(与活动相同的过程)并将我的应用程序的主活动添加到通知区域。当用户停止播放音乐时,我会停止该服务并从通知区域中删除该应用。您可能会注意到NPR App,Spotify,i-heart-radio和其他人之间的行为非常相似。