У меня есть фрагмент, который отображает более 33 видов текста и линейный график. Поворот экрана очень медленный, и Android Studio говорит: «Я / Хореограф: пропущено 49 кадров! Возможно, приложение выполняет слишком много работы над своим основным потоком». Количество пропущенных кадров увеличивается с каждым новым поворотом. Этого не происходит, если данные отображаются в самом действии (т.е. не во фрагменте). Даже если я закомментирую каждую строку кода, имеющую дело с данными, и оставлю только минимальный каркас фрагмента, проблема не исчезнет.
Я не знаю, что я делаю неправильно, но, поскольку проблема сохраняется, даже если данные не обрабатываются, я полагаю, что это связано с компоновкой?
Активность:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
ButterKnife.bind(this);
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
SensorDataFragment dataFragment = new SensorDataFragment();
fragmentTransaction.add(R.id.fragment_container, dataFragment).commit();
Фрагмент:
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.sensor_data_fragment, container, false);
return rootView;
}
Схема деятельности:
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
app:layout_scrollFlags="scroll"/>
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:id="@+id/device_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/appbar_layout"
android:visibility="gone"
tools:visibility="visible"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<FrameLayout
android:id="@+id/fragment_container"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
</androidx.core.widget.NestedScrollView>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".BlinkyActivity"
tools:ignore="ContentDescription">
<LinearLayout
android:id="@+id/progress_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:orientation="vertical"
android:visibility="gone"
tools:visibility="visible"
android:padding="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/connection_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="16sp"
tools:text="@string/state_connecting"/>
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:indeterminate="true"/>
</LinearLayout>
<include
android:id="@+id/not_supported"
layout="@layout/info_not_supported"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="gone"
tools:visibility="visible"/>
</RelativeLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Фрагмент макета:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.cardview.widget.CardView
android:id="@+id/spect_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_horizontal_margin"
android:background="@android:color/white"
app:cardElevation="1dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/spect_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/spect_tool_bar"
android:layout_width="0dp"
android:layout_height="?actionBarSize"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:logo="@drawable/outline_opacity_24"
app:title="@string/title_spectrum"
app:titleMarginStart="@dimen/toolbar_title_margin" />
<TextView
android:id="@+id/spect_summary"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingEnd="@dimen/activity_horizontal_margin"
android:text="@string/spectrum_summary"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spect_tool_bar" />
<com.github.mikephil.charting.charts.LineChart
android:id="@+id/spect_chart"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="@dimen/activity_horizontal_margin"
android:paddingBottom="0dp"
app:layout_constraintTop_toBottomOf="@+id/spect_summary" />
<ImageView
android:id="@+id/menu_numberformat"
android:contentDescription="@string/menu_number_format_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="@dimen/activity_horizontal_margin"
android:paddingEnd="@dimen/activity_horizontal_margin"
android:paddingStart="@dimen/activity_horizontal_margin"
android:onClick="showNumberFormatPopup"
app:srcCompat="@drawable/outline_more_horiz_24"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spect_chart" />
<TextView
android:id="@+id/sensor_label_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_horizontal_margin"
android:paddingBottom="5dp"
android:text="@string/sensor_label_1"
app:layout_constraintLeft_toRightOf="@+id/f1_label"
app:layout_constraintTop_toBottomOf="@+id/spect_chart" />
<TextView
android:id="@+id/sensor_label_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_horizontal_margin"
android:paddingBottom="0dp"
android:text="@string/sensor_label_2"
app:layout_constraintLeft_toRightOf="@+id/sensor_label_1"
app:layout_constraintTop_toBottomOf="@+id/spect_chart" />
<TextView
android:id="@+id/sensor_label_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_horizontal_margin"
android:paddingBottom="0dp"
android:text="@string/sensor_label_3"
app:layout_constraintLeft_toRightOf="@+id/sensor_label_2"
app:layout_constraintTop_toBottomOf="@+id/spect_chart" />
<TextView
android:id="@+id/f1_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingEnd="32dp"
android:paddingStart="@dimen/activity_horizontal_margin"
android:paddingBottom="0dp"
android:text="@string/f1_data_label"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/sensor_label_1" />
<TextView
android:id="@+id/s1f1_data"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingBottom="0dp"
android:text="@string/spectrum_unknown"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="@+id/sensor_label_1"
app:layout_constraintEnd_toEndOf="@+id/sensor_label_1"
app:layout_constraintLeft_toLeftOf="@+id/sensor_label_1"
app:layout_constraintTop_toBottomOf="@+id/sensor_label_1" />
// a lot of more text views
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
Может ли это быть вызвано макетом? Я имею в виду, если нет обработанных данных, что еще может вызвать проблему? Большое спасибо за любую помощь!