Плохая производительность с большим макетом интерфейса - PullRequest
0 голосов
/ 20 ноября 2018

В начале у меня была активность с некоторыми полями.С течением времени макет становится слишком большим, и теперь мне нужно его реорганизовать.

В настоящее время на Samsung Galaxy S8 активности требуется ~ 2 секунды, чтобы отобразиться, на более старом устройстве это число составляет 4-5 секунд., что ужасно.

У кого-нибудь есть совет для меня, где мне начинать рефакторинг?Я подумал о том, чтобы поместить нижнюю часть в просмотр в виде рециркулятора, но строки совершенно разные, и весь контент должен быть прокручиваемым (плюс для изображений есть HorizontalScrollView).Я использую Glide для загрузки изображений.

Файл макета: макет xml .

Снимок экрана: снимок экрана с экрана .

Update1:

Может быть, какая-то динамическая загрузка данных может мне помочь?Например, покажите «пустой» фрагмент после заполнения пользовательского интерфейса, а затем динамически установите поля сверху вниз.

1 Ответ

0 голосов
/ 21 ноября 2018

Я выбрал AsyncLayoutInflater , но пока он кажется хорошим выбором для моей проблемы.

Пример кода:

AsyncLayoutInflater asyncLayoutInflater = new AsyncLayoutInflater(getContext());
asyncLayoutInflater.inflate(R.layout.fragment_lake_more_data, mLakeDataContainer, new AsyncLayoutInflater.OnInflateFinishedListener() {

    @Override
    public void onInflateFinished(@NonNull View view, int resid, ViewGroup parent) {
        // set UI elements with data
        // ...

        parent.addView(view);
    }

}
});
...