问题描述
我正在尝试减少对话框在屏幕上的加载/显示时间。当前显示此初始时间需要5秒钟,随后的负载是瞬时的。几乎可以肯定,问题出在Dialog的show()
方法中。我采取了两种方法来解决此问题,一种是使用叠加层处理视图,另一种是使用AsyncTask。两者都没有成功。
叠加方法:
我采用的叠加方法只是在show()
的末尾附加loadDialogBox
并使用计时器将其隐藏。当用户单击按钮(因为已经调用show()
时,实现了“即时”对话框加载时,此方法起作用。虽然我不知道如何隐藏该初始show()
,但对话框会短暂地闪烁到屏幕上。
AsyncTask方法:
实施AsyncTask无效,因为onPreExecute
和onPostExecute
是唯一可以处理对话框元素的方法。 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...
}
//***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 (将#修改为@)