Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 异步任务在后台停止_Android_Background_Android Asynctask - Fatal编程技术网

Android 异步任务在后台停止

Android 异步任务在后台停止,android,background,android-asynctask,Android,Background,Android Asynctask,我正在构建用于收听acc流的应用程序。我正在使用这个库: 尤其是这个球员 PlayerCallback clb = new PlayerCallback() { ... }; MultiPlayer aacMp3Player = new MultiPlayer( clb ); aacMp3Player.playAsync( "http://..." ); // URL of MP3 or AAC stream 它是在AsyncTask中播放的,但对于一些Smarphone,当你们将应用程序放

我正在构建用于收听acc流的应用程序。我正在使用这个库:

尤其是这个球员

PlayerCallback clb = new PlayerCallback() { ... };
MultiPlayer aacMp3Player = new MultiPlayer( clb );
aacMp3Player.playAsync( "http://..." ); // URL of MP3 or AAC stream
它是在AsyncTask中播放的,但对于一些Smarphone,当你们将应用程序放回后台时,只需停止播放即可。 只有在methond onDestroy中,我才停止AsyncTask,而不是onPause或oStop


有人知道为什么播放器会停止吗?

简短回答:音乐流应用程序需要运行一个服务,以避免被Android终止

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

您可以阅读更多关于Android如何在进程和活动不是前台的活动应用程序时优先终止它们的信息。您将了解到,与后台进程(例如,用户退出的活动,但仍有一个正在运行的线程)相比,保留服务的优先级更高


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

太普通了,请尝试从新的线程调用播放器。请参见下面的答案。此外,不建议在异步任务中执行长时间运行的操作。Android目前正在以“一次一个”的模式执行异步任务。长时间运行的AsyncTask将阻止其他AsyncTask在同一池/进程中运行。我怀疑一个对象背后的编程模型和一个名为“PlaySync”的方法是从UI线程调用的,并在后台使用自己的线程进行播放。谢谢。。我会试试的!:)所以我应该让首发球员上场?从技术上讲,你不需要让任何东西“上场”。您只需要在用户离开活动进入主屏幕之前启动服务。您可以在以后扩展服务,以提供控制媒体播放器的命令和界面。这将为添加一个小部件打开大门,该小部件可以从Android桌面控制您的流。