3

我已經通過自己實現的OnCompletionListener看起來像這樣:Handler.postDelayed(......)並不耽誤了Runnable

public class SongEndCompletionListener implements OnCompletionListener{ 

    String nextView; 
    Context actualActivity; 
    int stopTime; 

    public SongEndCompletionListener(Context activity, String nextView, int time) { 
     this.nextView = nextView; 
     actualActivity = activity; 
    } 
    @Override 
    public void onCompletion(MediaPlayer arg0) { 


      Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       public void run() { 
         try { 
        Intent stopplay; 
        stopplay = new Intent(actualActivity,Class.forName(nextView)); 
        actualActivity.startActivity(stopplay);  
       } catch (ClassNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
        } 
       } 
      }, stopTime); 


    } 
} 

我希望它暫停停止時間秒,但其實際作用只要audiofile結束,就跳到下一個視圖。 你可能會指向我在哪裏我錯了,或者我怎麼可以延遲切換到另一個活動不同?

每一個提示是讚賞!

+0

切換活動不是問題,這工作正常。它只是在「歌曲」結束時切換活動,而不是在停止播放後的stopTime毫秒。 – Kazoooka

回答

8

我知道你的處理程序爲什麼不延遲發佈。

這是因爲你的停止時間爲0

您需要設置一個值爲「停止時間」,否則爲0。 例如推遲了Runnable一第二:

stopTime = 1000; // milliseconds 

或使用您的構造函數:

public SongEndCompletionListener(Context activity, String nextView, int time) { 
    this.nextView = nextView; 
    actualActivity = activity; 
    this.stopTime = time; // you forgot this 
}