如何通过活动结束发布线程?

时间:2016-04-01 04:56:06

标签: java android multithreading executorservice

抱歉,我的英语很差:)。 在我的APP中,有一个VideoView播放视频(m3u8)。 在此VideoView活动中,我使用ThreadExecutorService(newCachedThreadPool)来获取播放网址和其他信息。 当我想回到上一次活动时,我会这样做:

@Override
public void onDestroy() {
    super.onDestroy();
    if (videoView != null) {
        videoView.stopPlayback();
        videoView = null;
    }
    if (executor != null) {
        executor.shutdownNow();
        executor = null;
    }
}

这里是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();
        }
    }
};

和这样的激励:

executor.execute(changeSeekBar);

这是错误信息 enter image description here

1 个答案:

答案 0 :(得分:0)

最后,我使用EventBus取代了Thread + Handler,并且它起作用了。

这里是EventBus github:https://github.com/greenrobot/EventBus

非常感谢你的帮助:)