Инфляция в 3 раза ниже, чем в Nexus 5X, по сравнению со старым Nexus 5 - PullRequest
0 голосов
/ 27 сентября 2018

Я заметил, что накачивание определенной компоновки занимает в 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'
}

Nexus 5 - OnCreateViewHolder

Nexus 5x - OnCreateViewHolder

Nexus 5 - Create TextView

Nexus 5x - Create TextView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...