在将数据添加到recyclerview时添加(或重新输入)片段时,片段事务滞后

时间:2018-09-27 14:06:41

标签: android android-fragments kotlin android-recyclerview

当我切换到显示recyclerviews有数据的片段时,我的片段事务存在一些滞后相关的问题。数据越多,越复杂,事务就越滞后。

我没有关于滚动性能等的问题。只有事务动画(在这种情况下为幻灯片)。

仅当我以片段生命周期的某些方法提供recyclerview数据时才出现问题,例如onCreateViewonViewCreated ...

我唯一可以克服延迟的方法是等待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或类似名称中调用会导致延迟)

1 个答案:

答案 0 :(得分:0)

我认为答案来晚了。 创建视图时,您不应该在UI线程上做很多工作。 您可以覆盖片段中的f并找出动画何时结束。然后,您可以在[](const Point& p){ return p.x; }适配器中添加数据。 您可以在视图创建时显示onCreateAnimator(),并在加载数据后隐藏进度。

RecyclerView