AlertDialog.show()速度慢,是否需要预加载对话框?

6
我需要展示一个包含大约十几个项目(图像和文本)的ArrayAdapter的AlertDialog。当应用程序启动时,有一个加载屏幕,期间多个任务正在设置。其中一个设置任务是创建并构建AlertDialog。然后,在必须显示对话框时,只需调用dialog.show()。然而,在首次显示对话框时,仍会出现明显的延迟,直到单击打开对话框并显示。第一次显示对话框后,这种延迟就消失了。既然对话框已经创建,那么不应该有延迟吗?还有什么东西需要完全加载对话框(因此第一次单击没有延迟)?

我非常想知道为什么这个问题被投票降低了。它不是重复的,而且是一个相关的问题。 - AmiguelS
请发布对话框创建和列表视图/可回收视图设置代码。 - Nishant Pardamwar
发布对话框代码 - mohosyny
如果您的项很大,可能会影响渲染。考虑使用RecyclerView。 - momvart
1个回答

0

没有显示任何代码,所以我只能猜测。在 dialog.show() 下面是否有任何需要一段时间(可以短至 1 或 2 秒)才能完成的任务?如果是这样,它可能会阻塞 UI 线程,导致对话框在调用 show() 后无法立即出现。如果是这种情况,只需将该任务放在另一个线程上即可。例如:

dialog.show()
val handler = Handler()
thread(start=true) {
    DO THE JOB
    handler.post {
        dialog.dismiss()
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接