生成自定义DatePicker时的性能问题

时间:2018-07-01 05:21:55

标签: java android android-recyclerview

对于我的项目,我需要构建自己的自定义DatePicker。我不能只使用标准的DatePicker,因为我需要选择多个日期,禁用特殊日期等功能。

我计划构建自己的自定义DatePicker,使其与标准DatePicker尽可能接近。 因此,我决定使用ViewPager,在其中嵌套一个自定义视图,该视图包含一个自定义ViewHolder,该ViewHolder仅包含一个TextView来显示当前月份,一个RecyclerView来显示所述月份的实际天数。

结果看起来像这样:

The whole gridlike-structure is realized through a recyclerview (the names of the weekdays and the numbers of the dates), and the Name of the month is shown in a normal textview. The Arrow-Buttons are not part of the View, they are added directly through the activity.

我认为没有必要提供整个代码(适配器,布局等),因为整个过程相当简单,但是如果您需要查看,我可以在事实之后添加。

由于我的问题,当我开始活动时,整个应用程序停止约3秒钟,并且得到以下logcat输出:

I/Choreographer: Skipped 111 frames!  The application may be doing too much work on its main thread.

我将问题缩小到RecyclerViews。 (停用它们时,不会冻结/卡死)

活动开始时,应用程序必须加载3个完整的Recyclerviews(因为我设置了viewPager.setOffscreenPageLimit(2);) 并且该初始加载会导致整个应用程序冻结一小段时间。加载完所有内容后,整个过程完全没有延迟。

对于这个问题,我有两种不同的解决方案:

  1. 在另一个线程中加载RecyclerViews

    这个想法是,活动开始,并且RecyclerViews仅在加载时显示。这不是完美的,但是至少可以在不导致整个应用程序冻结的情况下开始活动。

  2. 用性能更好的替代RecyclerViews。

    是否甚至有一个视图/结构a)使我能够显示网格状结构,并且b)比recyclerview的性能更好? 最初,我选择RecyclerView来显示日期,因为我认为Standard DatePicker也使用该日期,但是在集成类中进行了一些挖掘之后,我对此不太确定。 在我看来,日子似乎是一无所有的。 (对此我可能是错的)

有没有可能这些想法之一可行?

如果没有,还有另一种方法来解决性能问题吗?

预先感谢

0 个答案:

没有答案