1
나는 10 개의 유사한 활동을하고 있으며 각각 2 개의 오디오 트랙을 가지고 있습니다. 활동이 생성 될 때마다 2 개의 미디어 플레이어를 생성하고 다른 활동으로 이동할 때마다 풀어 놓으려고 시도하지만 메모리가 실제로 해제되지 않고 잠시 후에 앱이 충돌합니다.
앱 충돌없이 많은 오디오 트랙을 재생하려면 어떻게해야합니까? 여기에 활동 중 하나의 코드입니다 : 내가 코멘트에서 언급 한 바와 같이Android : 다양한 활동으로 많은 짧은 길이의 오디오 트랙 재생
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, 나는 그것에 관심을 기울이지 않았다. 그러나 그것이 정확한 문제인 것처럼 보인다. 고맙습니다! 동의로 표시 할 수 있도록 답장을 보내시겠습니까? – ZahraZT
답변을 게시했습니다. –