Я заметил, что накачивание определенной компоновки занимает в 3 раза больше времени на Nexus 5X (Oreo 8.1.0) по сравнению со старым Nexus 5 (Marshmallow 6.0.1).
Макет выглядит как ниже.Как указано, половина макета фактически помечается как GONE
до тех пор, пока пользователь не щелкнет, а затем отобразится.Тем не менее, измеренные времена макета не показывают «ушедшую» часть макета.
<RelativeLayout>
<TextView/>
<ImageView/>
<LinearLayout>
<ImageView/>
<Space></Space>
<ImageView/>
<Space></Space>
<ImageView/>
<Space></Space>
<ImageView/>
<Space></Space>
<ImageView/>
<Space></Space>
<ImageView/>
<Space></Space>
<ImageView/>
</LinearLayout>
<View/>
<View/>
<LinearLayout> <---- marked as .GONE !!!
<LinearLayout>
<androidx.cardview.widget.CardView>
<ImageButton/>
</androidx.cardview.widget.CardView>
<Space></Space>
<androidx.cardview.widget.CardView>
<ImageButton/>
</androidx.cardview.widget.CardView>
<Space></Space>
<androidx.cardview.widget.CardView>
<ImageButton/>
</androidx.cardview.widget.CardView>
<Space></Space>
<androidx.cardview.widget.CardView>
<ImageButton/>
</androidx.cardview.widget.CardView>
</LinearLayout>
<LinearLayout>
<TextView/>
<Space></Space>
<TextView/>
<Space></Space>
<TextView/>
<Space></Space>
<TextView/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Используя Profiler, я получаю следующее:
Nexus 5
RecyclerView.OnCreateViewHolder
занимает ~ 19 мс
, а измерение только создания
TextView
занимает ~ 1,2 мс
, в то время как
Nexus 5X
RecyclerView.OnCreateViewHolder
занимает ~ 60 мс
TextView
занимает ~ 4 мс
Я приложил скриншоты из Профилировщика.
Мой вопрос: могу ли я что-то с этим сделать?
Я пытался преобразовать еговсе к ConstraintLayout - тогда становится еще хуже!
РЕДАКТИРОВАТЬ:
Я должен отметить, что RecyclerView
встроен в ViewPager
, и причина моей озабоченности, очевидно, в том, что создание экземпляров ViewHolders занимает очень много времени (7 из них) на Nexus 5X, что пользователь испытывает это как блокировку интерфейса пользователя.
Другая информация, связанная с проектом:
minSdkVersion 23
targetSdkVersion 28
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
}