Android Fragments Android long executing code in online查看

fjaof16o  于 2023-11-19  发布在  Android
关注(0)|答案(1)|浏览(91)

我有一个片段,通过创建适配器并填充数据来调整回收器视图。但是该代码导致渲染时延迟。我应该将回收器的调整移动到哪里才不会阻止主渲染?片段需要~0.8s渲染,这看起来很滞后。

// This code causes lags both in onCreateView() and in onViewCreated()
view.findViewById<RecyclerView>(R.id.shop_recycler).apply {
    adapter = SourcesShopAdapter().apply {
        dataset = SourcesReference.shopData.toList()
        updateFiltered()
    }
    layoutManager = LinearLayoutManager(
        context,
        LinearLayoutManager.VERTICAL,
        false
    )
}

字符串

nnsrf1az

nnsrf1az1#

这似乎是你的问题时,做的主UI线程的重载,加载的片段是不一样快,你喜欢,因为Android停止UI加载数据时.
您可以执行以下操作:创建一个后台Thread,将你的数据加载到列表中。这样做的时候,重负载并不主要集中在UI线程上。完成后,你可以实现一个Callback,它是通过runOnUIhread(new Runnable...)将你的适配器分配到列表中并使用invalidate()重新加载ClerView来执行的:

YourAdapter adapter = new YourAdapter(list);
                    recyclerView.setAdapter(adapter);
                    recyclerView.invalidate();

字符串
如果你愿意,你甚至可以启动一个LoadingBar,然后执行后台线程,并使LoadingBar.setVisibility(false)时,无效的浏览器视图。因此,您的客户将不会有一个滞后的感觉。

相关问题