Multithreading 从用户设置seekbar

Multithreading 从用户设置seekbar,multithreading,android-studio,runnable,Multithreading,Android Studio,Runnable,此代码是关于歌曲播放应用程序的,但要在歌曲列表中手动选择歌曲会导致应用程序崩溃。随机发生 new Thread(new Runnable() { @Override public void run() { while (mediaPlayer != null) { try { Message msg = new Message();

此代码是关于歌曲播放应用程序的,但要在歌曲列表中手动选择歌曲会导致应用程序崩溃。随机发生

 new Thread(new Runnable() {
        @Override
        public void run() {
            while (mediaPlayer != null) {
                try {
                    Message msg = new Message();
                    msg.what = mediaPlayer.getCurrentPosition();
                    handler.sendMessage(msg);
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }).start;

@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
    @Override
    public void handleMessage(@NonNull Message msg) {
        super.handleMessage(msg);
        int currentPosition = msg.what;
        // update position
        seekBar.setProgress(currentPosition);
        //update Label
        String elapsedTime = creatTimeLabel(currentPosition);
        tvCurrentTime.setText(elapsedTime);
        String remainingTime = creatTimeLabel(totaltime);
        tvTotalTime.setText(remainingTime);
    }
};
事故报告

 E/AndroidRuntime: FATAL EXCEPTION: Thread-3
Process: com.example.myapp, PID: 10836
java.lang.IllegalStateException
    at android.media.MediaPlayer.getCurrentPosition(Native Method)
    at com.example.myapp.SongRecycler.Activity.ActivitySongAudioDetail$1.run(ActivitySongAudioDetail.java:52)
    at java.lang.Thread.run(Thread.java:919)
请帮我解决这个问题。谢谢你