2012-02-05 70 views

回答

2

您需要多線程。如果你打電話給分機。活動,它使用UI,所以你不應該使用Timer。只有處理程序。許多用於多線程的java類不適用於Android UI。使用這個類:當你要定期執行任何任務

import android.os.Handler; 


/** 
* Examples of use: 
* 
* Waiter(Runnable call, 30000); - in the calling method 
* 
* @author Petr Gangnus 
*/ 
public class Waiter { 
    /** 
    * the handler that works instead of timer and supports UI 
    */ 
    static private Handler handler = new Handler(); 
    Runnable task; 

    public Waiter(Runnable task,long time){ 
     this.task=task; 
     handler.removeCallbacks(task); 
     handler.postDelayed(task, time); 
    } 

    public void stopWaiting(){ 
     handler.removeCallbacks(task); 
    } 

} 

// setting the task called - in the calling method 
final private Runnable call = new Runnable() { 
    @Override 
    public void run() { 
     ...; 
    } 
}; 
+0

真的是多線程需要嗎?現在我已經在button cliick listener上拍攝了照片,並且我想單獨運行它。 – 2012-02-05 22:34:50

+0

你想如何等待?一個線程正在等待,另一個線程是另一個(相機)應用程序的被調用活動。真的,Android是所有線程。簡單線程類可以用於algirithmic線程(non-ui),Handlers和其他 - 用於UI線程。 – Gangnus 2012-02-05 23:08:53

+0

您建議的解決方案的任何示例,甚至是quasicode?如何簡單 - 第一次功能拍攝由按鈕觸發的圖片,然後在由buttonClick.performClick()觸發的PictureCallback? – 2012-02-05 23:17:56

3

,那麼的TimerTask類是最好的。結帳一個非常簡單的例子here。在其運行方法中,您可以將您想要執行的代碼定期執行。您也可以在安排時間間隔時給出時間間隔。

+0

很高興用System.out.println(「Time's up!」)顯示示例,但他需要調用活動。在這裏查看網站 - 計時器在用戶界面中不安全。按下按鈕並調用活動是UI。您應該使用處理程序。簡單的方法根本無法在這裏工作。 – Gangnus 2012-02-06 09:30:03

相關問題