0
我正在製作媒體播放器,我在其中有進度條。 點擊播放按鈕後,線程啓動,它將設置進度條的進度。 單擊暫停按鈕時,線程將停止。不能摧毀線程
但是當我按停止按鈕時,我希望進度條回滾,並在點擊播放時再次啓動,因此我希望線程銷燬但我無法做到。 當按下停止按鈕進行呼叫暫停()方法得到: -
03-24 13:17:27.855: ERROR/global(26971): java.lang.UnsupportedOperationException
我知道這是一個過時的方法,但請我的GUID如何當按下停止按鈕來破壞線程。以下是我的代碼的一部分: -
public void onClick(View src) {
switch (src.getId()) {
case R.id.buttonStart:
if(DataManager.getInstance().getSongPause()=="y"){
myService.player.start();
DataManager.getInstance().setSongPause("n");
buttonStart.setVisibility(View.GONE);
buttonPause.setVisibility(View.VISIBLE);
// DataManager.getInstance().setWantsToPlaySong(true);
//DataManager.getInstance().setOnPausedSong("n");
//DataManager.getInstance().setOnPausedSong("y");
if(mt.paused==true){
mt.unPauseProgressBar();
}
}else{
stopService(new Intent(this, MyService.class));
DataManager.getInstance().setSong_uri(uri);
Intent intent = new Intent(this,MyService.class);
Bundle b = new Bundle();
b.putString("song_uri",uri);
intent.putExtras(b);
startService(intent);
buttonStart.setVisibility(View.GONE);
buttonPause.setVisibility(View.VISIBLE);
DataManager.getInstance().setOnPausedSong("y");
DataManager.getInstance().setPausedSongName(songName);
//Toast.makeText(this, "My Service Started "+DataManager.getInstance().getSongDuration(), Toast.LENGTH_LONG).show();
//new Thread(myThread).start();
}
//Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
break;
case R.id.buttonStop:
Log.d(TAG, "onClick: stopping srvice");
stopService(new Intent(this, MyService.class));
buttonStart.setVisibility(View.VISIBLE);
buttonPause.setVisibility(View.GONE);
/*mt=null;
seekbar.setProgress(0);*/
mt.stopProgressBar();
//mt.destroy();
//mt.notify();
break;
case R.id.buttonforward:
stopService(new Intent(this, MyService.class));
current_song++;
FetchAllMusic fetchAllMusic = new FetchAllMusic();
fetchAllMusic.execute();
//new Thread(myThread).start();
break;
case R.id.buttonbackward:
Log.d(TAG, "onClick: stopping service");
stopService(new Intent(this, MyService.class));
if(current_song>0){
current_song--;
}
FetchAllMusic fetchAllMusic2 = new FetchAllMusic();
fetchAllMusic2.execute();
break;
case R.id.buttonPause:
buttonStart.setVisibility(View.VISIBLE);
buttonPause.setVisibility(View.GONE);
/* MyService myservice=new MyService();
myservice.onPause();*/
myService.player.pause();
// myThread.
DataManager.getInstance().setSongPause("y");
DataManager.getInstance().setWantsToPlaySong(false);
DataManager.getInstance().setOnPausedSong("n");
DataManager.getInstance().setPausedSongName(songName);
mt.pauseProgressBar();
/*try {
//Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
和下面是我的線程類: -
class myThread extends Thread implements Runnable{ // long duration=DataManager.getInstance().getSong_duration(); //long value=duration/100; private volatile boolean paused = false; private volatile boolean finished = false; @Override public void run() { while(!finished){ while (myProgress
停止進度條讓我上面提到的錯誤
確定我已經在OnCreate中加入的代碼本peice的 - > MT =新MyThread的();我正在設置變量完成在我的停止按鈕onclicklistener - > mt.finished = true;並且它沒有效果 – abhishek 2011-03-24 08:44:00
我應該在這之後再打電話通知嗎?我已經嘗試過所有可能的語法情況,但我仍然無法處理進度條永不停止的問題 – abhishek 2011-03-24 08:46:17