缓慢的AlertDialog.show()。预加载对话框?

问题描述 投票:3回答:1

我需要显示一个AlertDialog,其中包含一个ArrayAdapter,有大约十几个项目(图片和文本)。当应用程序启动时,会有一个加载屏幕,在这个屏幕中会有多个设置任务。其中一个设置任务是创建和构建AlertDialog。

然后,当Dialog必须被显示时,只需要调用 dialog.show(). 然而,在第一次显示对话框时,在点击打开和显示对话框之前仍然有一个非常明显的延迟。在第一次显示对话框后,这种延迟就消失了。

既然已经创建了对话框,难道不应该有延迟吗?还需要什么才能让对话框完全加载(因此第一次点击时没有延迟)?

android android-alertdialog
1个回答
0
投票

没有显示代码,所以我只能猜测一下。dialog.show()下面是否有任何工作在第一次显示对话框时需要一段时间(可以短至1或2秒)?如果是这样的话,可能会阻塞ui线程,在调用show()后,对话框可能不会马上出现。如果是这样的话,就把这个工作放到另一个线程上。比如说

dialog.show()
val handler = Handler()
thread(start=true) {
    DO THE JOB
    handler.post {
        dialog.dismiss()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.