У меня есть ViewPager
в Activity с каждым фрагментом, содержащим 4,5 TextInputLayouts
. При открытии активности с NavigationMenu
это вызывает небольшую задержку перед открытием активности. Я взял systrace
, чтобы выяснить, что происходит. Большую часть времени я получаю некоторые проблемы, сообщая Scheduling Delays
. Хотя я изучал задержки планирования, но я не могу понять, что я делаю неправильно со своей стороны, так как я просто раздуваю макеты, и в потоке пользовательского интерфейса не выполняется никакой фон или другая тяжелая работа, Ниже приведена задержка планирования в systrace
.
Running
85.094 ms
Not scheduled, but runnable
1.949 ms
Blocking I/O delay
0.259 ms
Sleeping
13.885 ms
Frame
Description
Work to produce this frame was descheduled for several milliseconds, contributing to jank. Ensure that code on the UI thread doesn't block on work being done on other threads, and that background threads (doing e.g. network or bitmap loading) are running at android.os.Process#THREAD_PRIORITY_BACKGROUND or lower so they are less likely to interrupt the UI thread. These background threads should show up with a priority number of 130 or higher in the scheduling section under the Kernel process.
![cpu profiler](https://i.stack.imgur.com/uUZT2.png)
Также в systrace
поступают оповещения Inefficient View alpha usage
из-за HeiglightView
, которого я не могу найти в иерархии представления моего макета, и я нигде не использую его.
view name
"HighlightView"
width
990
height
55
HighlightView alpha caused saveLayer 990x55 took 0.01ms
Description
Setting an alpha between 0 and 1 has significant performance costs, if one of the fast alpha paths is not used.
Файл макета
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.core.widget.NestedScrollView android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/attach_image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textAllCaps="true"
android:drawableEnd="@drawable/ic_cloud_upload"
android:drawableRight="@drawable/ic_cloud_upload"
android:gravity="center_vertical"
android:text="@string/attach_image_to_upload" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="16dp" android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
android:layout_marginRight="16dp" android:layout_marginEnd="16dp"/>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:id="@+id/creator_name"
app:validation_key="@string/validator_non_empty"
app:hintAnimationEnabled="false"
app:layout_constraintTop_toBottomOf="@+id/attach_image"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginTop="16dp">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:maxLength="400"
android:maxLines="1"
android:hint="@string/creator_name"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:id="@+id/survey_name"
app:validation_key="@string/validator_non_empty"
app:hintAnimationEnabled="false"
app:layout_constraintTop_toBottomOf="@+id/creator_name"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginTop="16dp">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:maxLength="400"
android:maxLines="1"
android:hint="@string/survey_name"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:id="@+id/order_number"
app:hintAnimationEnabled="false"
app:validation_key="@string/validator_non_empty"
app:layout_constraintTop_toBottomOf="@+id/survey_name"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginTop="16dp">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:maxLength="400"
android:inputType="number"
android:maxLines="1"
android:hint="@string/order_number"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:id="@+id/prize"
app:validation_key="@string/validator_non_empty"
app:hintAnimationEnabled="false"
app:layout_constraintTop_toBottomOf="@+id/order_number"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginTop="16dp">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:maxLength="400"
android:maxLines="1"
android:hint="@string/prize"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:layout_width="0dp"
android:id="@+id/description"
app:validation_key="@string/validator_non_empty"
app:hintAnimationEnabled="false"
app:layout_constraintTop_toBottomOf="@+id/prize"
android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="16dp" android:layout_marginStart="16dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="16dp"
android:layout_marginRight="16dp" android:layout_marginTop="16dp" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toBottomOf="parent">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:inputType="text"
android:gravity="start"
android:maxLength="400"
android:maxLines="1"
android:imeOptions="actionDone"
android:hint="@string/description"/>
</com.google.android.material.textfield.TextInputLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</layout>
Просмотр иерархии
![view hierarchy](https://i.stack.imgur.com/xe5GP.png)