返回活动时如何避免创建MediaPlayer的新实例

Posted

技术标签:

【中文标题】返回活动时如何避免创建MediaPlayer的新实例【英文标题】:How to avoid creating a new instance of MediaPlayer when returning to activity 【发布时间】:2016-07-14 10:23:32 【问题描述】:

我正在使用 MediaPlayer,当用户按下返回离开活动时,它会继续在后台播放(我希望发生这种情况),但是当用户返回时,他们无法控制已经在播放的 MediaPlayer,因为mediaPlayer = new MediaPlayer() 行实例化一个新的。

我也无法让mediaPlayer.create() 工作,因为我正在使用需要

的 soundcloud 连接
mediaPlayer1.reset();
mediaPlayer1.setDataSource(getResources().getString(R.string.Basic_lesson_1));
mediaPlayer1.prepareAsync();

行。仅当一个新的 MediaPlayer 尚不存在时,我如何才能实例化它?

【问题讨论】:

创建静态媒体播放器并检查是否为空 @Pravin 已修复,谢谢!!! 【参考方案1】:

创建全局静态媒体播放器并始终按照@Pravin 所说执行验证 同时创建媒体播放器之类的。

if(mediaPlayer == null)
  mediaPlayer = new MediaPlayer()
   

【讨论】:

这修复了它!非常感谢!【参考方案2】:
private static MediaPlayer mediaPlayer1 = null;

//SomeActivity's onCreate()
if(mediaPlayer1 == null)
    mediaPlayer1.create(...);

【讨论】:

虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。【参考方案3】:

如何在 backKeyPress 上调用 stop() 方法

【讨论】:

我需要 MediaPlayer 继续播放:P

以上是关于返回活动时如何避免创建MediaPlayer的新实例的主要内容,如果未能解决你的问题,请参考以下文章

如何在所有活动和片段中使用 MediaPlayer 的单个实例?

使用_IECreate()创建新会话

当应用程序从后台处于活动状态时,如何避免在本机反应中安装组件?

如何返回之前的活动?

如何在 android 的 mediaplayer 中停止和播放新歌曲?

使用导航架构操作点击返回按钮时如何避免片段重新创建?