如何解决Android Studio Dialog.show加载缓慢
我正在尝试减少对话框在屏幕上的加载/显示时间。当前显示此初始时间需要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...
}
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 举报,一经查实,本站将立刻删除。