마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Fragment Destroy시점에 쓰레드를 죽이지 못해서 NullPointerException오류!

0 추천

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));
    }
}

 

androidO (260 포인트) 님이 2015년 5월 20일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...