【问题标题】:How to block UI for some seconds in android?如何在android中阻止UI几秒钟?
【发布时间】:2012-06-28 06:54:42
【问题描述】:

如何在 Android 中阻止用户在几秒钟内进行所有交互?

我想知道,如何使用 wait(5000); 这样的延迟时间来做到这一点

【问题讨论】:

  • 永远不要这样做会导致 ANR。其他方法是使用一些进度对话框进行后台工作。

标签: android wait android-ui


【解决方案1】:

您可以覆盖dispatchTouchEvent 并停止对super.dispatchTouchEvent(ev); 的调用任何触摸事件都必须经过此方法才能处理。

设置一个您控制的布尔值,并在方法中使用它来确定您是否希望阻止控制。

private boolean stopUserInteractions = false;

public boolean dispatchTouchEvent(MotionEvent ev) {
    if (stopUserInteractions) {
        return true;
    } else {
        return super.dispatchTouchEvent(ev);
    }
}

【讨论】:

  • 您忽略了键盘交互的可能性,而且这必须在所有活动中静态实现。最好采用进度对话方法。
【解决方案2】:

显示Non-cancelable progress dialog并在需要时通过代码将其关闭.......

看例子

http://www.helloandroid.com/tutorials/using-threads-and-progressdialog

【讨论】:

    【解决方案3】:

    您可以弹出一个模式的、不可取消的进度对话框,阻止用户做任何事情。但是,您永远不应该阻塞 UI 线程本身。

    【讨论】:

      【解决方案4】:

      在 UI Block time 中使用 ProgressDialog。将 ProgressDialog 可取消设置为 false。所以用户无法访问 UI。

      谢谢。

      【讨论】:

        【解决方案5】:

        由于你的问题很短,你会以这种方式得到答案。

        您可以使用ThreadAsyncTask 使某些ProgressDialog 对用户可见。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-18
          • 1970-01-01
          • 2021-03-12
          • 2014-04-05
          • 1970-01-01
          相关资源
          最近更新 更多