什么是setTimeOut()的JavaScript等效于Android?

我需要setTimeOut(call function(),milliseconds);的等效代码setTimeOut(call function(),milliseconds); 为Android。

 setTimeOut(call function(),milliseconds); 

Solutions Collecting From Web of "什么是setTimeOut()的JavaScript等效于Android?"

你可能想看看TimerTask

既然你提出了这个问题,我想提出一个不同的build议,这是一个处理程序 。 使用比TimerTask更简单,因为你不需要明确地调用runOnUiThread,因为Handler只要在UI线程上创build,或者在构造函数中使用主循环创build,就可以与UI线程相关联。 它会这样工作:

 private Handler mHandler; Runnable myTask = new Runnable() { @Override public void run() { //do work mHandler.postDelayed(this, 1000); } } @Override public void onCreate(Bundle savedState) { super.onCreate(savedState); mHandler = new Handler(Looper.getMainLooper()); } //just as an example, we'll start the task when the activity is started @Override public void onStart() { super.onStart(); mHandler.postDelayed(myTask, 1000); } //at some point in your program you will probably want the handler to stop (in onStop is a good place) @Override public void onStop() { super.onStop(); mHandler.removeCallbacks(myTask); } 

在你的活动中有一些事情要处理:

  1. 如果您的处理程序在onStop中不停止(或onPause,如果您在onResume中启动它),那么当您的处理程序仍在运行时,您的活动可能是closures/不可见的,如果尝试更新UI,则会导致问题
  2. 如果您的手机进入深度睡眠,处理程序不会像您指定的那样频繁地触发。 我知道这一点,因为我已经使用蓝牙设备进行了大量testing,以在运行数小时之后testing连接性,并且每次使用时都使用处理程序和日志打印。
  3. 如果你需要这个计时器正在进行,我build议把它放在一个比活动持续时间更长的服务。 向服务注册您的活动(通过实现服务中定义的与服务通信的接口)。

这是我在当前项目中使用的代码。 正如Matt所说,我使用了TimerTask。 60000是milisec。 = 60秒。 我用它来刷新比赛成绩。

 private void refreshTimer() { autoUpdate = new Timer(); autoUpdate.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { public void run() { adapter = Score.getScoreListAdapter(getApplicationContext()); adapter.forceReload(); setListAdapter(adapter); } }); } }, 0, 60000); 

作为使用java下划线回答Valentyn的答案:

添加依赖到gradle:

 dependencies { compile group: 'com.github.javadev', name: 'underscore', version: '1.15' } 

Java的:

 import com.github.underscore.lodash.$; $.setTimeout(new Function<Void>() { public Void apply() { // work return null; } }, 1000); // 1 second 

下划线-java库中有setTimeout()方法。

代码示例:

 import com.github.underscore.lodash.$; import com.github.underscore.Function; public class Main { public static void main(String[] args) { final Integer[] counter = new Integer[] {0}; Function<Void> incr = new Function<Void>() { public Void apply() { counter[0]++; return null; } }; $.setTimeout(incr, 100); } } 

该function将在100ms内以新线程启动。