2014-03-25 51 views
0

好的,這是我的問題,我對所有類型的線程感到困惑asyntask處理程序wait()runnables工作人員,我不知道android有多少其他的東西「立即」或「實時」執行任務。Android - 等待一段時間後做些什麼(很簡單)

我想要做的就是在3秒後停止聲音(我正在使用soundmanager)。如果我使用wait(它會阻止我的UI,並在屏幕上彈出'not responding'消息)。同樣的事情,如果我在一個單獨的線程中使用相同的'等待'(我不知道爲什麼,它不應該,對嗎?我的意思是,這是一個單獨的線程的整個點) 反正,我是相對較新的在Android中如此。希望你們能爲我解決這個問題!

在此先感謝

回答

0

正如你指出,Android有一些專門類來處理日以優化的方式發佈。

比使用純粹的Thread更合適的方法是使用Android的Handler類來完成此操作。

new Handler().postDelayed(new Runnable() 
{ 

    @Override 
    public void run() 
    { 
     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 
}, YOUR_DELAY); 

對於您想這樣做的背景下,你可以使用一個AsyncTask長時間運行操作。

要實現在此期間定期進行「勾號」回調的倒計時情況,可以使用CountDownTimer

所有這些的優點是他們執行UI線程上的重要代碼。這在Android開發中的許多情況下非常重要。

0

好吧,林回答我的問題的情況下,任何人有這個問題

new Thread() 
{ 
    public void run() 
    { 

     try 
     { 
      sleep(sharedPref.getInt("alarm_duration", 2000) 
        * DateUtils.SECOND_IN_MILLIS); 
     } 
     catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 
}.start(); 

你需要調用。開始()不.RUN() - 這樣,你的UI不會凍結

愚蠢的錯誤:)

相關問題