【问题标题】:mediaPlayer single InstancemediaPlayer 单实例
【发布时间】:2015-12-22 10:03:18
【问题描述】:

我的 MediaPlayer 出现错误。 当我单击播放列表中的某个项目时,它会创建一个 mp3Player。如果我按回音乐在后台播放(一切正常)。但是,如果我从我的应用程序中选择另一首歌曲,该应用程序会创建一个新的媒体播放器: 然后我播放了 2 首音乐!

我尝试使用“singleTask”、“singleInstance”,但它不起作用。 我试过“intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);” 这些都不行!

也许如果我可以恢复之前的活动,我可以销毁它然后创建一个下一个媒体播放器,不是吗? 有人可以帮忙吗? :D

【问题讨论】:

  • 您是否尝试过您正在使用的 MediaPlayer 类的 Singleton 实例?
  • singleton 是我想到的东西,但我真的不明白设计!也许你有一个很好的教程给我? :D 因为我找不到和我匹配的人
  • 简单来说,Singleton 是一个类,它的构造函数总是输出同一个对象。 Even wikipedia 有一个实现示例。这里的事情是理解这个过程......基本上,不是让构造函数构建对象,而是构建一次,然后将其保存在 ram 上,直到使用/需要;

标签: android android-intent instance android-mediaplayer


【解决方案1】:

你在后台播放音乐意味着你使用服务? 问题是您需要重新连接服务(服务播放音乐)。

How to reconnect service android

或者试试。 Media Playback,例如:Universal Android Music Player Sample

【讨论】:

  • 我不使用服务。这很糟糕吗?
【解决方案2】:

您可以简单地将您的活动 android:launchMode="singleInstance" 在清单中。 然后在您的活动中覆盖以下方法

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // do what you want here
}

在上述方法中,您可以重置媒体播放器的值

【讨论】:

  • 每当你通过startActivity(intent)方法调用activity时都会调用这个方法
  • 所以我只是把它放在我的代码上,它会变得很好吗?或者我必须在其中添加其他方法
  • 哦,我想我明白了:在 super.onNewInstance() 下面我刚刚放: mediaPlayer.reset();对吗?
  • 我们可以聊天吗?应该对我更好!我的电子邮件是 pierrecharlesmangin@hotmail.fr
猜你喜欢
  • 1970-01-01
  • 2012-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多