Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 活动暂停得不够快_Java_Android - Fatal编程技术网

Java 活动暂停得不够快

Java 活动暂停得不够快,java,android,Java,Android,在我的AppCompative活动中,我在特定事件中显示AlertDialog 显示AlertDialog后,用户将无法再单击my AppCompative活动中的任何内容 我试图禁用onPause()中的活动:getWindow().setFlags(WindowManager.LayoutParams.FLAG\u不可触摸,WindowManager.LayoutParams.FLAG\u不可触摸) 要检查它是否已暂停:getLifecycle().getCurrentState().isA

在我的AppCompative活动中,我在特定事件中显示AlertDialog

显示AlertDialog后,用户将无法再单击my AppCompative活动中的任何内容

我试图禁用onPause()中的活动:
getWindow().setFlags(WindowManager.LayoutParams.FLAG\u不可触摸,WindowManager.LayoutParams.FLAG\u不可触摸)

要检查它是否已暂停:
getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.resume)

但似乎onPause()的调用速度不够快

我可以在暂停AppCompatActivity时将静态布尔值设置为true,在onResume()中将其设置为false,并在每个onClickListener/onTouchListener等中检查它,但是有更好的方法吗

感谢您的帮助

编辑:
谢谢你的评论!我发现,当UI线程启动(用于打开AlertDialog)时,当我在屏幕上单击时,单击会被放入队列中。这就是为什么在AlertDialog运行时执行click事件。我是否需要保存AlertDialog并检查它是否正在运行,或者是否有更好的方法?

我认为您应该让我们了解有关代码的更多信息。不过,我想我能猜出你在说什么。android中的每个视图组件都有一个
setEnabled(false)
方法,如果在视图组件java对象上调用它,它将被禁用,不再可单击。因此,只要在需要显示AlertDialog时禁用组件,然后调用
setEnabled(true)
再次启用组件即可。我很确定暂停活动不是你应该做的。因为手动操作根本不是最佳实践。

您需要解释您试图实现的目标或发布更多代码,因为显示一个对话框(即模态对话框)实际上会阻止您单击它背后的内容。这不是您需要解决的问题。您的意思是,当您与该对话框背后的活动交互时,该对话框将被取消吗?