【问题标题】:"Destroy" Thread in Progressbar进度条中的“销毁”线程
【发布时间】:2013-05-27 21:00:26
【问题描述】:

我再次向您提出一个问题。 我有一个扩展类服务并实现类 Runnable 用于音频播放的类,我正在使用进度条来显示音乐再现的进度。在run方法中添加更新进度条值的代码,上面还可以,但是当我播放一首歌曲并没有完成上一首歌曲时跳转到另一首歌曲时,之前创建的线程没有被破坏,帮助我请问?

public class PlaySongService extends Service implements MediaPlayer.OnCompletionListener, Runnable {

public static MediaPlayer mediaPlayer = new MediaPlayer();
private ProgressBar pbSong;
private final String TAG = "PlaySongService";

@Override
public IBinder onBind(Intent intent) {
    return null;  //To change body of implemented methods use File | Settings | File Templates.
}

public void onCreate() {
    mediaPlayer.setOnCompletionListener(this);
    mediaPlayer.reset();
    pbSong = new WeakReference<ProgressBar>(Main.pbSong);
    super.onCreate();

}

....... /* Selected song in listview*/

private void playSong(int position) {
    try {
            mediaPlayer.reset();
            mediaPlayer.setDataSource(my_file_selected_in_listview);
            mediaPlayer.prepare();
            mediaPlayer.start();
            pbSong.get().setProgress(0);
            pbSong.get().setMax(mediaPlayer.getDuration());
            new Thread(this).start();            
    } catch (Exception e) {
        Log.e(TAG,e.getMessage());
    }
}

@Override
public void run() {
    int currentPosition= 0;
    int total = mediaPlayer.getDuration();
    while (mediaPlayer!=null && currentPosition<total) {
        try {
            Thread.sleep(1000);
            currentPosition= mediaPlayer.getCurrentPosition();
            Log.i(TAG,Thread.currentThread().toString());
        } catch (InterruptedException e) {
            return;
        } catch (Exception e) {
            return;
        }
        pbSong.get().setProgress(currentPosition);
    }
}    

}

【问题讨论】:

  • 尝试检查 !isplaying 以消除进度

标签: android multithreading progress-bar


【解决方案1】:

线程在正常情况下不会被“销毁”,它们在 run 方法中return 时结束。这可以通过例如启动一个布尔标志或通过调用interrupt()(线程外)并定期检查线程中的Thread.interrupted()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多