android - 对话框 - 不必要的多重绘图?
问题描述
从 Lollipop (5.0.2) 升级到 Nougat (7.1.2) 后,客户端向我报告了在屏幕上显示后重复绘制对话框的令人不安的现象。在具有许多控件的对话框中可以清楚地看到这个问题。
Lollipop 下的相同应用程序正常工作:
- 对话显示很快(0.5 秒),
- 对话框立即响应(显示后 0.0 秒)
切换到牛轧糖后:
- 对话延迟显示(2.5 秒)
- 出现在屏幕上后,需要等待几秒钟的责任(显示后4.2秒)
在四个附加的电影中,我在不同的情况和 Android 版本中展示了这种现象。查看对话框的底部边缘:
- Lollipop - 与 ListView 对话- 正确
- Lollipop - 带有 ScrollView 的对话框- 正确
- Nougat - 与 ListView 对话- 不正确!
- Nougat - 带有 ScrollView 的对话框- 不正确!
在带有ListView 的对话框的情况下,在Nougat 下,对于每个元素,Adapter.getView() 方法最多被调用了36 次!我想,这意味着,dlalog 被画了 36 次。
在布局 xml 中进行了一些更正后,我能够将 Adapter.getView () 调用的数量减少到 5,但永远不会减少到 1。
但是,在Nougat下,在没有ListView的对话框的情况下,对话框出现在屏幕上后,仍然存在“匹配”的难看效果。在 Lollipop 下,每个项目只有一次对 Adapter.getView() 的调用。
请帮忙,如何尝试消除这种影响?
客户无法将 Android 版本更改为较新的版本,因为它是一个大型产品,经过 Nougat 测试后,我们再也负担不起了。
解决方案
推荐阅读
- javascript - javascript中的平滑蛇运动
- python - GMSH:如何避免在 GMSH 中创建不需要的曲面/一维元素?
- javascript - 使用 Javascript 单击按钮后如何显示表单?为什么这段代码不起作用?
- asp.net-core-identity - 如何在 ASP.NET Core Identity 中获取/加载现有用户
- html - 如何将 aria-required 添加到 Material-UI 选择组件
- javascript - 从输入中获取值并将其转换为百分比值以用于绘图饼图中
- python-3.x - TclError:图像“pyimage3”不存在(仅在第一次运行时有效)
- php - Laravel API 控制器 | 如何在控制器的这种“更新”方法中散列密码?
- java - Android 如何使用 SimpleDateFormat 添加新日期
- laravel - 如何在 laravel 的同一页面中显示下拉选择的值?