我在Android应用程序类中创建了一个SoungMagager类,因此我可以使用它来管理应用程序中的声音。在SoundManager中,我有一个SoundPool和一个MediaPlayer,分别播放一些短音和长音。
为了“清理”我,我在onDestroy()方法中放置了释放()SoundPool和MediaPlayer的方法,并调用finish()来退出应用程序。
我的问题是,如果我这样做完()并立即回来应用程序,我没有更多的声音。没有声音池或媒体播放器。
如果我只是按“Home”硬件按钮退出,再次回到应用程序,就会发出声音。
如果我完成(),则转到系统应用管理并强制关闭应用,然后再次运行应用,有声音。
如果我使用System.exit(0)而不是finish(),那么一切都很好,但我被告知不要这样做。
我怀疑这是因为Application类的事情,但我不确定。我该如何解决这个问题?有什么建议吗?
答案 0 :(得分:0)
我认为你将soundpool
和mediaplayer
对象放在你要完成的活动中(),当活动被销毁时,它的实例变量被释放(我的意思是删除)所以很明显你需要将声音分配给soundManager类的soundpool,这样它就不会被销毁。我想你明白了我的意思。
public class SoundManager {
public static SoundPool mSoundPool;
public static MediaPlayer mMediaPlayer;
.....
....
}
现在在您使用soundpool对象的ur活动中执行以下操作: -
class <your activity> extend Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
SoundManager.mSoundPool = <assign your audio>;
SoundManager.mMediaPlayer = <assign>;
}
}