这只是一个嘲弄,让你知道我在做什么。

我的回收者观点有着复杂的逻辑。让我指出他们,
complex.
我的数据来自网络,我一直在使用房间+重装+寻呼适配器。
用户体验非常糟糕。我需要一些建议。我相信有两件事影响我的滚动功能。
我需要一些建议,如何改进和提供一些良好的用户体验。
发布于 2020-06-09 01:11:57
由于没有源代码,我无法尝试评估造成这种情况的确切原因。但我以前也经历过这样的事情,我有一些可能的解决办法。
( 1)将长期运行的任务从UI线程移开:
我注意到你的数据来自房间+改造。默认情况下,除非调用allowMainThreadQueries(),否则Room必须以异步方式操作。如果调用了allowMainThreadQueries(),如果意外地试图在UI线程上获取数据,则可以检查代码。
2)您正确地实现了RecyclerView (RV)吗?
RV尽可能地减少xml膨胀的数量,并通过重用相同视图类型的充气布局来提高性能。因此,如果您只有两个视图类型,如您的问题中所示,RV只会膨胀3-6您的布局(即使您在您的列表中有100个项目),并将它附加到ViewHolder,然后在您滚动列表时将视图与项目绑定和循环。然而,如果实施不当,RV可能表现不佳。我以前体验过的一个例子是在RV适配器中以视图类型返回位置。
public class SampleAdapter extends RecyclerView.Adapter<RVItem.ViewHolder> {
private final List<Item> items = new ArrayList<>();
@Override
public int getItemViewType(int position) {
return position; //Never do this
return items.get(position).getType(); //Do this
}
}因此,您可以尝试检查您的实现/逻辑中是否存在RV错误。
3)在Android 中使用Profiler
如果上述任何建议都不能解决这个问题。我能想到的最后一种方法是使用Profiler记录跟踪,而你在RV中滚动并通过分析跟踪来识别哪个调用是耗时/阻塞的。更多信息:https://developer.android.com/studio/profile/android-profiler
更多信息
最后,我可以知道在UI线程中加载AdMob广告是什么意思吗?据我所知,AdMob像UnifiedNativeAd一样异步加载和返回ads。只有这样,您才会尝试在UI线程上使用来自UnifiedNativeAd的数据来膨胀和设置视图,而这并不是真正的UI阻塞任务。
https://stackoverflow.com/questions/62273067
复制相似问题