【问题标题】:Android: playing a lot of short length audio tracks in different activitiesAndroid:在不同的活动中播放很多短音轨
【发布时间】:2014-11-14 13:28:38
【问题描述】:

我有 10 个类似的活动,每个活动都有 2 个音轨。 我尝试在每次创建活动时创建 2 个媒体播放器,并在每次移动到另一个活动时释放它,但内存实际上不会释放,并且在一段时间后应用程序崩溃。
如何在不让应用程序崩溃的情况下播放许多不同的音轨? 这是其中一项活动的代码:

public class First extends Activity implements OnClickListener{

private static MediaPlayer audio1,audio2;
public static Intent right, left;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.first);
    audio1 = MediaPlayer.create(getApplicationContext(), R.raw.audio1);
    audio2 = MediaPlayer.create(getApplicationContext(), R.raw.audio2);
    setVolumeControlStream(AudioManager.STREAM_MUSIC);


    ImageView button1 = (ImageView) findViewById(R.id.button1);
    ImageView button2 = (ImageView) findViewById(R.id.button2);
    ImageView left = (ImageView) findViewById(R.id.left);
    ImageView right = (ImageView) findViewById(R.id.right);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);
    left.setOnClickListener(this);
    right.setOnClickListener(this);

}

@Override
public void onClick(View item) {
    if(item.getId() == R.id.button2) 
    {
        audio1.start();
    }
    else if(item.getId() == R.id.button1)
    {
        audio2.start();
    }
    else if(item.getId() == R.id.left)
    {
        left = new Intent(getApplicationContext(), Tenth.class);
        left.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        startActivity(left);
        finish();
    }
    else if(item.getId() == R.id.right)
    {
        right = new Intent(getApplicationContext(), Second.class);
        right.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        startActivity(right);
        finish();
    }       
}
@Override
protected void onDestroy() {
    audio1.stop();
    audio2.stop();
    audio1.release();
    audio2.release();
    audio1 = audio2 = null;
    super.onDestroy();
}
}

【问题讨论】:

  • 为什么你的 MediaPlayer 被声明为静态的呢?
  • @Mighter ,我没有注意这一点,但似乎这正是问题所在。谢谢!您想将其设为答案,以便我将其标记为已接受吗?
  • 我已经发布了答案。

标签: android audio android-activity media-player


【解决方案1】:

正如我在评论中提到的,问题可能是成员声明中的 static 修饰符。没有必要这样做,它可能会导致内存问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2011-07-22
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多