【发布时间】:2012-02-27 13:03:18
【问题描述】:
我在我的 Android 应用程序中使用相机,我想每 30 秒拍一张照片。例如。对于间隔,我想使用先前时间和当前时间 System.currentTimeMillis() 或超时之间的差异。但我不知道如何使函数被重复调用。有什么解决办法吗?
【问题讨论】:
标签: java android multithreading time timer
我在我的 Android 应用程序中使用相机,我想每 30 秒拍一张照片。例如。对于间隔,我想使用先前时间和当前时间 System.currentTimeMillis() 或超时之间的差异。但我不知道如何使函数被重复调用。有什么解决办法吗?
【问题讨论】:
标签: java android multithreading time timer
您需要多线程。如果你打电话给分机。活动,它使用 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() {
...;
}
};
【讨论】:
当您想定期执行任何任务时,TimerTask 类是最好的。查看一个非常简单的示例here。在其运行方法中,您可以放置要定期执行的编码。您也可以在调度时给出时间间隔。
【讨论】: