У меня есть некоторые проблемы, связанные с лагами в моих транзакциях фрагментов, при переключении на фрагмент, который отображается как recyclerviews
с данными.Чем больше данных и сложнее, тем больше задержка транзакции.
У меня нет проблем с производительностью прокрутки и т. Д. Только анимация транзакции (в данном случае слайд).
Проблема возникает только тогда, когда я даю данные recyclerview
в некоторых методах жизненного цикла фрагмента , например onCreateView
, onViewCreated
...
Единственный раз, когда я могу избавиться от задержки, это если я дождусь завершения fragment transaction
(анимация завершена), а затем передам данные recyclerview
.Тем не менее, я не думаю, что это выглядит очень хорошо, когда он анимирует пустой экран и затем добавляет данные в recyclerview
.
Есть ли в любом случае, я могу дать данные recyclerview
до транзакциианимация выполняется без задержки?
Транзакция действительно проста:
val fragmentTransaction: FragmentTransaction? = supportFragmentManager?.beginTransaction()
fragmentTransaction?.setCustomAnimations(animationTheme.screenRootEnter(), animationTheme.screenRootExit(), animationTheme.screenRootPopEnter(),animationTheme.screenRootPopExit())
fragmentTransaction?.add(R.id.container, fragment, tag)
fragmentTransaction?.addToBackStack(tag)
fragmentTransaction?.commit()
Интересная часть - это та часть, где я передаю данные recyclerview
:
fun setData(items: ArrayList<ListItem>) {
this.mItems = items
notifyItemRangeInserted(0, items.size)
}
(Как уже упоминалось, это вызывает задержку при вызове из onCreateView
или аналогичного)