【问题标题】:How to add time delay in java code in android如何在android中的java代码中添加时间延迟
【发布时间】:2013-08-19 14:30:39
【问题描述】:

我正在制作一个应用程序,我想在我的代码中添加时间延迟以延迟操作。 有什么可以设置毫秒的延迟吗? 请帮忙。

我想做类似的事情:

for(int i=1;i<100;i++){
     Delay(1000); // I want to add a delay so that this wont happend instanlty
     Matrix matrix=new Matrix();
     matrix.postRotate((float) angle2,width, height);
     image.setImageMatrix(matrix);

调用 Thread.sleep() 导致 ANR android 中的 Visual Basic 中是否有类似计时器的东西? vb中的定时器是一个独立于主程序运行的元素,它会引发一个由用户设置频率的事件。

【问题讨论】:

  • 使用 Thread.sleep(1000) 方法
  • 是 Thread.sleep(1000) 会冻结整个应用程序和其他动画吗?
  • 仅当您在 UI 线程上休眠时。请务必按照所有答案的建议使用单独的线程。
  • 如果你在 UI 线程中休眠,你最终会触发 ANR 并且你的应用程序将被杀死。您可以在developers site 阅读有关 ANR 的更多信息。
  • (ANR = 应用程序无响应 @mremremre1)

标签: java android time delay timedelay


【解决方案1】:

Thread.sleep 在单独的线程中会这样做。

如果您没有将AsyncTask 用于其他事情,请改用它。它将为您简化事情。 AsyncTask 将使用线程池,因此您不必担心自己创建线程。

确保不要在按钮或等效的事件回调中休眠,因为您将在 UI 线程上休眠。这将使您的应用程序显得迟钝和迟缓。只在其他线程中休眠,然后调用回 UI 进行更新。

根据更新后的问题进行编辑:

看起来您正在 UI 上执行一些动画。一个单独的线程将是最好的,因为它看起来是一个长时间运行的进程。

【讨论】:

    【解决方案2】:

    如果你想阻止整个线程-睡眠。但不要在主线程上执行此操作,因为它会冻结您的应用/手机的 UI。

    如果你想在未来做某事但又不想拖住应用程序,你可以在几秒钟内向 Handler 发送一条延迟消息。

    如果你想在更遥远的将来做某事,请通过 AlarmManager 设置警报。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2022-11-01
      • 2018-09-08
      相关资源
      最近更新 更多