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

既然你再次提出这个问题,我想提出一个不同的推荐,即Handler 。 它比TimerTask更简单,因为你不需要明确地调用runOnUiThread,因为Handler将与UI线程相关联,只要它在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中停止它,你的活动可以在你的处理程序仍在运行时关闭/不可见(如果你在onResume中启动它,则会暂停),如果你尝试更新UI,这将导致问题
  2. 如果您的手机进入深度睡眠状态,处理程序将不会像您指定的那样经常发射。 我知道这一点,因为我已经用蓝牙设备进行了一些广泛的测试,以便在运行数小时后测试连接性,并且每次启动时我都使用处理程序和日志打印。
  3. 如果你需要这个计时器,我建议把它放在一个持续时间比活动更长的服务中。 使用服务注册您的活动(通过实现服务中定义的接口与服务进行通信)。

这是我在当前项目中使用的代码。 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() { public Void apply() { // work return null; } }, 1000); // 1 second 

underscore-java库中有setTimeout()方法。

代码示例:

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

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