Fragment가 Destroy할 때 isExist = false; 해서 Thread를 멈추게하고 thread.interrup();
해줬는데요 sleep(100)이여도
어떤 타이밍에서는 nullpointexception이 발생합니다.
해결 방법이 있을까요?
아래는 소스 부분입니다.
@Override
public void onDestroy() {
ButterKnife.reset(this);
isExist = true;
thread.interrupt();
getActivity().unbindService(connection);
super.onDestroy();
}
public void threadFun(){
thread = new Thread(new Runnable() {
@Override
public void run() {
while(mediaPlayer.isPlaying() && !isExist ){
try {
Thread.sleep(100);
Message msg = timeHandler.obtainMessage();
timeHandler.sendMessage(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();
}
public class TimeHandler extends Handler {
@Override
public void handleMessage(Message msg) {
mp3Time.setText(DateFormat.format("mm:ss", mediaPlayer.getCurrentPosition()) + " / " +
DateFormat.format("mm:ss", mediaPlayer.getDuration()));
mp3SeekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition()/
(float)mediaPlayer.getDuration())*100));
}
}