与旧版Nexus 5相比,Nexus 5X上的布局膨胀慢3倍

时间:2018-09-27 07:56:12

标签: android performance layout

我注意到,与较旧的Nexus 5(棉花糖6.0.1)相比,Nexus 5X(奥利奥8.1.0)在某种布局上的通货膨胀时间最多长3倍。

布局如下图所示。如图所示,布局实际上被标记为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>

使用事件探查器,我得到以下信息:

Nexus 5

RecyclerView.OnCreateViewHolder花费〜19ms

并仅衡量

TextView大约需要1.2毫秒

同时

Nexus 5X

RecyclerView.OnCreateViewHolder大约需要60毫秒

TextView大约需要4毫秒

我已经附加了探查器的屏幕截图。

我的问题是:我可以对此做些什么吗?

我尝试将其全部转换为ConstraintLayout,然后情况变得更糟!

编辑:

我应该提到RecyclerView嵌入在ViewPager中,我担心的原因显然是,在Nexus 5X上实例化ViewHolders(其中的7个)花费了很长时间,以至于用户遇到这种情况,因为用户界面受阻。

其他与项目相关的信息:

  

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

0 个答案:

没有答案