Java 活动暂停得不够快
在我的AppCompative活动中,我在特定事件中显示AlertDialog 显示AlertDialog后,用户将无法再单击my AppCompative活动中的任何内容 我试图禁用onPause()中的活动:Java 活动暂停得不够快,java,android,Java,Android,在我的AppCompative活动中,我在特定事件中显示AlertDialog 显示AlertDialog后,用户将无法再单击my AppCompative活动中的任何内容 我试图禁用onPause()中的活动:getWindow().setFlags(WindowManager.LayoutParams.FLAG\u不可触摸,WindowManager.LayoutParams.FLAG\u不可触摸) 要检查它是否已暂停:getLifecycle().getCurrentState().isA
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)
再次启用组件即可。我很确定暂停活动不是你应该做的。因为手动操作根本不是最佳实践。您需要解释您试图实现的目标或发布更多代码,因为显示一个对话框(即模态对话框)实际上会阻止您单击它背后的内容。这不是您需要解决的问题。您的意思是,当您与该对话框背后的活动交互时,该对话框将被取消吗?