我需要展示一个包含大约十几个项目(图像和文本)的ArrayAdapter的AlertDialog。当应用程序启动时,有一个加载屏幕,期间多个任务正在设置。其中一个设置任务是创建并构建AlertDialog。然后,在必须显示对话框时,只需调用dialog.show()。然而,在首次显示对话框时,仍会出现明显的延迟,直到单击打开对话框并显示。第一次显示对话框后,这种延迟就消失了。既然对话框已经创建,那么不应该有延迟吗?还有什么东西需要完全加载对话框(因此第一次单击没有延迟)?
没有显示任何代码,所以我只能猜测。在 dialog.show() 下面是否有任何需要一段时间(可以短至 1 或 2 秒)才能完成的任务?如果是这样,它可能会阻塞 UI 线程,导致对话框在调用 show() 后无法立即出现。如果是这种情况,只需将该任务放在另一个线程上即可。例如:
dialog.show()
val handler = Handler()
thread(start=true) {
DO THE JOB
handler.post {
dialog.dismiss()
}
}