2012-11-01 40 views
0

我在Android应用程序类中创建了一个SoungMagager类,所以我可以使用它来管理整个应用程序的声音。在SoundManager中,我有一个SoundPool和一个MediaPlayer分别播放一些较短和较长的声音。在发布后没有声音()mediaplayer

为了“清理”我,我把方法释放()SoundPool和MediaPlayer在onDestroy()方法,并调用finish()退出应用程序。

我的问题是,如果我这样做完()并立即回来的应用程序,我没有更多的声音。没有soundpool或mediaplayer。

如果我只是按下“主页”硬件按钮退出,并再次回到应用程序,就会有声音。

如果我完成(),然后去系统应用程序管理和强制关闭应用程序,然后再次运行应用程序,有声音。

如果我使用System.exit(0)而不是finish(),那么每件事情都很好,但我被告知不要那样做。

我怀疑这是因为Application类的东西,但我不确定。我应该如何解决这个问题?有什么建议么?

回答

0

我想你把soundpool和你所要完成(),所以obvioulsy时被销毁活动的实例变量被释放(我的意思是删除)活动mediaplayer对象,所以你需要分配声音soundManager类的soundpool不会被销毁。我认为你明白了我的观点。

public class SoundManager { 

    public static SoundPool mSoundPool; 
    public static MediaPlayer mMediaPlayer; 
     ..... 
     .... 
} 

现在乌尔活动中,您正在使用的Soundpool对象做到这一点: -

class <your activity> extend Activity{ 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
      SoundManager.mSoundPool = <assign your audio>; 
      SoundManager.mMediaPlayer = <assign>; 
     } 
} 
+0

对不起。我可以猜出你的意思,但这并没有多大帮助。 –

+0

所以在这个改变后发生了什么告诉我 –

+0

我把SoundManager放在Application类中,所以它只需要加载一次。 –