Android 的 setTimeOut() javascript 等效于什么?

新手上路,请多包涵

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

 setTimeOut(call function(),milliseconds);

原文由 José Francisco Lara Aguilar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 375
1 个回答

你可能想看看 TimerTask

既然你又提到了这个,我想提出一个不同的建议,那就是 Handler 。它比 TimerTask 使用起来更简单,因为您不需要显式调用 runOnUiThread,因为处理程序将与 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 中启动它时在 onPause 中停止),您的活动可能会关闭/不可见,而您的处理程序仍在运行,如果您尝试更新 UI,这将导致问题
  2. 如果您的手机进入深度睡眠,处理程序将不会像您指定的那样频繁触发。我知道这一点,因为我已经对蓝牙设备进行了一些广泛的测试,以在运行数小时后测试连接性,并且每次触发时我都使用处理程序和日志打印。
  3. 如果您需要此计时器持续运行,我建议将其置于比活动持续时间更长的服务中。向服务注册您的活动(通过实现服务中定义的用于与服务通信的接口)。

原文由 Matt Wolfe 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题