【问题标题】:Android : Custom DialogFragment so slow to displayAndroid:自定义 DialogFragment 显示速度太慢
【发布时间】:2013-05-07 11:34:23
【问题描述】:

我有一个DialogFragment 作为弹出窗口。这个DialogFragment 中有一个ListView,它使用了一个BaseAdapter,它具有自定义TableRow。我的问题是,完全显示弹出窗口大约需要 2 秒。有什么解决方案或建议可以让我更快地显示此弹出窗口。

更多细节:TableRow 有 2 个ImageViews 和 3 个自定义TextViews。 BaseAdapter 处理 View 因为它必须做一些事情,比如隐藏其他 View、设置文本等。

任何帮助将不胜感激。谢谢! :D

【问题讨论】:

  • 减少主 UI 线程的工作/改进适配器。
  • 使用延迟加载。尝试在线程中一张一张地加载图片
  • 感谢您的快速回复。我只在ListView 上显示 5 个项目。延迟加载在哪里完成?

标签: android listview baseadapter tablerow android-dialogfragment


【解决方案1】:

我对 DialogFragment 也有很多问题,在我们公司,我们决定放弃它。 主要问题是它需要一些时间来渗透和做碎片的东西。但在它出现之前,用户可以与屏幕交互。 例如。在弹出窗口出现之前多次按下按钮并可能导致意外行为,您必须在代码中考虑。

改为使用普通 Dialog 并设置 Content View - 自定义布局和其他参数

    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();

它有助于避免与 Fragment、Fragment Transactions、State 和许多其他相关的问题。

【讨论】:

  • 我会尝试使用Dialog而不是DialogFragment。 Fragment transaction 需要很长时间才能显示,因此在实际进度结束之前我们无法向用户显示进度。
  • 当你说不使用 DialogFragment 而是使用普通 Dialog 时,这是否意味着你只需将类从扩展 DialogFragment 更改为扩展 Dialog?
猜你喜欢
  • 2011-10-19
  • 2014-10-23
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2018-03-14
  • 2017-02-28
  • 2023-01-19
  • 1970-01-01
相关资源
最近更新 更多