安卓:自定义DialogFragment显示缓慢

8
我有一个作为弹出窗口的DialogFragment。这个DialogFragment里面有一个ListView,它使用了一个自定义的TableRowBaseAdapter。我的问题是,完全显示这个弹出窗口需要大约2秒钟。你能否给我一些解决方案或建议,使得显示这个弹出窗口更快呢?
更多细节:每行TableRow都包含两个ImageView和三个自定义的TextViewBaseAdapter会对View进行处理,因为它需要做一些诸如隐藏其他View、设置文本等操作。
非常感谢您的帮助!:D

2
在主UI线程上做更少的工作/改进适配器。 - user
1
使用延迟加载。尝试逐个在线程中加载图像。 - Harsh Dev Chandel
1
感谢您的快速回复。我只在ListView上显示5个项目。惰性加载是在哪里完成的? - dzep
1个回答

5
我在使用DialogFragment时遇到了很多问题,最后我们公司决定放弃它。主要问题是它需要一些时间来渗透并进行片段操作。但在它出现之前,用户可以与屏幕交互。例如,在弹出窗口出现之前多次按按钮可能会导致意外行为,您必须在代码中考虑这一点。
相反,使用普通的对话框,并设置内容视图 - 自定义布局和其他参数。
    Dialog dialog = new Dialog(context);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.progress_dialog);
    dialog.setCancelable(false);

    Window window = dialog.getWindow();
    if (window != null) {
        window.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    }

    dialog.show();

它有助于避免与Fragments、Fragment Transactions、State等相关的问题。


我将尝试使用Dialog而不是DialogFragment。片段事务需要很长时间才能显示,因此我们无法在实际进度结束之前向用户显示进度。 - Serdar Samancıoğlu
1
当你说不要使用DialogFragment而是使用普通的Dialog时,这是否意味着你只需将类从扩展DialogFragment更改为扩展Dialog? - Ben Mora

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