2012-02-05 61 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