2014-11-14 2 views
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(); 
} 
} 
+1

왜 MediaPlayer가 정적으로 선언 되었습니까? –

+0

@Mighter, 나는 그것에 관심을 기울이지 않았다. 그러나 그것이 정확한 문제인 것처럼 보인다. 고맙습니다! 동의로 표시 할 수 있도록 답장을 보내시겠습니까? – ZahraZT

+0

답변을 게시했습니다. –

답변

0

, 문제는 멤버 선언에 static 수정 될 수 있습니다. 이를 수행 할 필요가 없으며 메모리 문제가 발생할 수 있습니다.

관련 문제