Java 如何使用activity finish?;释放线程;

Java 如何使用activity finish?;释放线程;,java,android,multithreading,executorservice,Java,Android,Multithreading,Executorservice,对不起,我的英语很差:)。 在我的应用程序中,有一个视频视图来播放视频(m3u8)。 在这个VideoView活动中,我使用Thread和ExecutorService(newCachedThreadPool)获取播放URL和其他信息。 当我想回到上一个活动时,我会这样做: @Override public void onDestroy() { super.onDestroy(); if (videoView != null) { videoView.stopPl

对不起,我的英语很差:)。 在我的应用程序中,有一个
视频视图
来播放视频(m3u8)。 在这个
VideoView
活动中,我使用
Thread
ExecutorService(newCachedThreadPool)
获取播放URL和其他信息。 当我想回到上一个活动时,我会这样做:

@Override
public void onDestroy() {
    super.onDestroy();
    if (videoView != null) {
        videoView.stopPlayback();
        videoView = null;
    }
    if (executor != null) {
        executor.shutdownNow();
        executor = null;
    }
}
executor.execute(changeSeekBar);
这里是Runnable

private Runnable changeSeekBar = new Runnable() {
@Override
public void run() {
    // TODO Auto-generated method stub
    try {
        while (seekBarAutoFlag) {
            if (null != videoPlay.this.videoView&& videoPlay.this.videoView.isPlaying()) {
                video_seekBar.setProgress((int) videoView.getCurrentPosition());
            }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
};
执行者是这样的:

@Override
public void onDestroy() {
    super.onDestroy();
    if (videoView != null) {
        videoView.stopPlayback();
        videoView = null;
    }
    if (executor != null) {
        executor.shutdownNow();
        executor = null;
    }
}
executor.execute(changeSeekBar);
这是错误信息

最后,我使用EventBus替换线程+处理程序,这是可行的

以下是EventBus github:


非常感谢您的帮助:)

要停止线程,请调用此
新线程(runnable).interrupt()这与如何使用java线程无关。您有涉及寄存器的错误信息。这意味着您的硬件或其他软件或共享库存在问题。这是不可能调查的,因为它的标题是chinesethanks~(发送给MIUI)意味着向MIUI(一家公司)发送错误消息,我尝试了这个,它是有效的。但是有一些错误,所以我尝试使用WearHandler。非常感谢!)