안녕하세요 학원에서 자바를 처음 접하고 공부하고있는데요..
웹에서 음악정보들을 받아와 앱에서 스트리밍으로 실행시키는 코드입니다.
코드의 일부분입니다.
음악리스트에는 2곡의 음악이 있고, (ListView)
총 음악url를 저장할 변수 2개 ( 중복으로 실행되는거를 방지하기위해 만들었습니다. e_url, url)
설명을 하자면,
처음 음악 실행을 누르면, e_url 의 현재 url 를 저장한후, 각 url 를 비교하여
같은음악의 곡이면 mediaPlayer의 객체를 null 로 만들고 재생성 하는것을 이용해서
중복으로 실행되는것을 막고, 선택한 음악이 나오게 구현하였습니다.
( 리스트를 터치할수록 돌림노래같이 나오더라구요..)
public void musicPlay(String url){
if(e_url.compareTo(url)!=0) {
e_url = url;
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
} else {
mediaPlayer.stop();
mediaPlayer = new MediaPlayer();
}
}else if(e_url.compareTo(url)==0){
Log.d("test","같은노래야");
mediaPlayer.stop();
mediaPlayer = null;
e_url = "e_url";
}
try{
if(mediaPlayer!=null) {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(e_url);
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.start();
}
}catch(Exception e){
e.printStackTrace();
}
}
여기서 질문입니다
처음에 else if 구문을 else 구문으로 하여 구현하였는데 else 부분을 아예 타지를 않았습니다.
한동안고민하다가 else if 문으로 아예 정해놓으니까 정상적으로 타더라구요..
( compareTo(String args) 해당문자열이 args 와 같은 문자열이면 0을 리턴합니다. )
이유를 좀 알수있을까요??ㅠㅠ 두가지 조건뿐만 아니라 다른 조건들이 있어서 안되는거였나요??
고수님들 답변부탁드립니다!!