1

我正在使用 MediaPlayer 播放广播流。当我后台播放流的主要活动时会出现问题。

当手机使用过多资源时(例如,在尝试显示已安装应用程序的列表时),流将停止。我怀疑,Android 关闭流是为了节省一些资源。

这是我开始时准备媒体播放器的方式:

radioPlayer=new MediaPlayer();
radioPlayer.setDataSource(streamLocation); //with a try/catch of course in the full code
radioPlayer.prepareAsync();
radioPlayer.seekTo(0);
radioPlayer.setOnInfoListener(this);
radioPlayer.setOnPreparedListener(new OnPreparedListener(){                 
public void onPrepared(MediaPlayer mp) 
        radioPlayer.start();
});

这一切都在主线程上运行。

4

2 回答 2

1

Service 是一个应用程序组件,可以在后台执行长时间运行的操作,并且不提供用户界面。另一个应用程序组件可以启动一个服务,即使用户切换到另一个应用程序,它也会继续在后台运行。此外,组件可以绑定到服务以与其交互,甚至执行进程间通信 (IPC)。例如,服务可能会在后台处理网络事务、播放音乐、执行文件 I/O 或与内容提供者交互。

潜入深处

于 2013-03-06T19:06:40.373 回答
0

尝试让媒体播放器作为服务而不是在活动中运行。这样,当您的应用程序进入挂起状态时,您可以让媒体播放器在后台播放。当用户将注意力从应用程序上移开时(例如,如果有电话进来),活动将暂停或自行销毁。但是,服务被设计为在后台与 Android 操作系统中运行的所有内容一起运行。

服务

于 2013-03-06T19:03:07.883 回答