Android Studio Dialog.show加载缓慢

问题描述

我正在尝试减少对话框在屏幕上的加载/显示时间。当前显示此初始时间需要5秒钟,随后的负载是瞬时的。几乎可以肯定,问题出在Dialog的show()方法中。我采取了两种方法解决此问题,一种是使用叠加层处理视图,另一种是使用AsyncTask。两者都没有成功。

叠加方法

我采用的叠加方法只是在show()的末尾附加loadDialogBox并使用计时器将其隐藏。当用户单击按钮(因为已经调用show()时,实现了“即时”对话框加载时,此方法起作用。虽然我不知道如何隐藏该初始show(),但对话框会短暂地闪烁到屏幕上。

AsyncTask方法

实施AsyncTask无效,因为onPreExecuteonPostExecute是唯一可以处理对话框元素的方法doInBackground是减轻UI线程处理的唯一方法,无法处理GUI元素。因此,show()必须放置在doInBackground之外,最终给UI线程增加负担并给我们5秒钟的加载时间。

同样,问题出在show()的初始调用中。是否有一种方法可以启动对话框或创建对话框(不可见),以便在首次调用show()时,只需将切换为可见状态即可。

MainActivity / onCreate代码

public class MainActivity extends AppCompatActivity {
    Dialog dialogMain; //Globally declared
//more variables...

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            loadDialogBox(); // Method dialog Box call

        Button newButton = (Button) findViewById(R.id.newButton);
        newButton.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                    dialogMain.show(); // Make the dialog Box visible
            }
        });

        //code...

    }

LoadDialogBox方法

//***METHOD loadDialogBox*** Used to create/initialize dialogMain dialog Box,called in onCreate
public void loadDialogBox() {
    dialogMain = new Dialog(MainActivity.this);
    dialogMain.setContentView(R.layout.dialog_layout);
    dialogMain.setTitle("Title");
    dialogMain.setCanceledOnTouchOutside(false);
    dialogMain.getwindow().setBackgroundDrawable(new    ColorDrawable(Color.TRANSPARENT));
//elements declaration (many elements here)...

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...