You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android视图中包含的惰性列在滚动时会出现很大的延迟。

解决这个问题的方法是通过使用“重用视图”来优化您的RecyclerView适配器。具体来说,您可以检查您的适配器中每个ViewHolder的实现,以确保您在必要时正确地使用缓存视图。

以下是一个例子,展示了如何在共享单个ViewStub实例的情况下使用“策略”来适当重用视图:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
 
    private final LayoutInflater mInflater;
 
    private final ViewStub mCachedViewStub;
 
    private int mLastPosition = -1;
 
    private final RecyclingLayoutManager mLayoutManager;
 
    private List<MyObject> mData = new ArrayList<>();
 
    public MyAdapter(Context context, RecyclerView recyclerView) {
        mInflater = LayoutInflater.from(context);
        mCachedViewStub = new ViewStub(context);
        mLayoutManager = new RecyclingLayoutManager(context);
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setAdapter(this);
    }
 
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        final View view = mCachedViewStub.inflate();
        final ViewHolder holder = new ViewHolder(view);
        mLayoutManager.registerViewHolder(holder);
        return holder;
    }
 
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        final MyObject item = mData.get(position);
        if (item != null) {
            holder.bind(item);
            holder.itemView.setVisibility(View.VISIBLE);
            mLastPosition = position;
        } else {
            holder.itemView.setVisibility(View.GONE);
        }
    }
 
    @Override
    public int getItemCount() {
        return mData.size();
    }
 
    public void swapData(List<MyObject> data) {
        mData = data != null ? new ArrayList<>(data) : new ArrayList<>();
        notifyDataSetChanged();
    }
 
    static class RecyclingLayoutManager extends LinearLayoutManager {
 
        private final SparseArray<MyAdapter.ViewHolder> mViewHolders = new SparseArray<>();
 
        RecyclingLayoutManager(Context context) {
            super(context);
        }
 
        void registerViewHolder(MyAdapter.ViewHolder holder) {
            mViewHolders.append(holder.hashCode(), holder);
        }
 
        @NonNull
        @Override
        public RecyclerView.LayoutParams generateDefaultLayoutParams() {
            return new MyLayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT);
        }
 
        @Override
        public RecyclerView.LayoutParams generateLayoutParams(Context c, AttributeSet attrs) {
            return new MyLayoutParams(c, attrs);
        }
 
        @Override
        public RecyclerView.LayoutParams generateLayoutParams(ViewGroup.LayoutParams lp) {
            return new MyLayoutParams(lp);
        }
 
        @Override
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

展望 2022 :Android 开发技术动向 | 社区征文

然后色阶化应用到你开发的应用中,应用跟随主题的不同和变换颜色,千人千面。## Stretch OverscrollAndroid12 中加入了 Stretch overscroll effect ,相对于以前的水波纹效果,滚动反馈更加真实自然。开发者可以使... 这近几个版本的迭代中 Android Studio 面向如何提高开发者的编码和调试效率增加了一系列新功能。## Compose @review最近的 Andorid Studio 版本中对 Compose 的预览功能进行了多项强化:像原生视图那样,支持对...

Fastbot 开源版技术原理与架构

文章来源|字节跳动软件工程实验室Repo | github.com/bytedance/Fastbot\_Android **0****1** **问题背景**近年来,移动应用程序的数量呈现爆炸性增长,随之而来的是用户对应用程... 模型扩展:如果当前 GUI 页面中的某些超事件尚未包含在概率模型𝑀中,Fastbot 将启动扩展策略,随机选择一个尚未执行的超事件。在实际中有两种可能的情况:1)先前的测试运行可能没有覆盖所有的超事件,2)当前测试应用程...

客服IM小得物灰度生产遇到的挑战和实践

只能选择在凌晨后低峰发布。这样造成整个发布流程持续到凌晨5点,在较长时间工作负荷下,可能会出现未能覆盖的bug导致上线功能出现问题。* 由于是凌晨全量发布,没有经过生产流量的验证,问题的爆发往往会延迟到早晨8... IM网关作为IM中台,不涉及过多业务,一般都只涉及消息群组服务的发版,只要把控好发布质量,滚动升级的模式暂时够了,暂时没必要灰度。* C端灰度采用什么策略? 比较常用的策略是通过uid进行灰度,指定用户进入灰...

Android 14 开始官方支持直接监听截屏,不用观察媒体文件了~|社区征文

> 截屏可以说是手机设备最常用的功能了,Android 系统非常重视截屏方面的体验,近几年的更新都不忘去优化这方面的体验。从一开始仅在通知栏提醒已截屏,到 Android 11 支持在左下角生成截屏缩略图供编辑或分享,再到 Android 12 支持滚动截屏,以及这次的 Android 14 允许 App 直接监听用户的截屏操作。为打造更加标准的监听截屏体验,Android 14 正式推出了受隐私保护的相关 API。简单来说,该 API 允许 App 以 Activity 为单位注册...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Android视图中包含的惰性列在滚动时会出现很大的延迟。 -优选内容

展望 2022 :Android 开发技术动向 | 社区征文
然后色阶化应用到你开发的应用中,应用跟随主题的不同和变换颜色,千人千面。## Stretch OverscrollAndroid12 中加入了 Stretch overscroll effect ,相对于以前的水波纹效果,滚动反馈更加真实自然。开发者可以使... 这近几个版本的迭代中 Android Studio 面向如何提高开发者的编码和调试效率增加了一系列新功能。## Compose @review最近的 Andorid Studio 版本中对 Compose 的预览功能进行了多项强化:像原生视图那样,支持对...
客户端 SDK
2024 年 2 月云手机客户端 SDK V1.37.0 的发布说明如下: AndroidAndroid 端 SDK 包含以下新增功能和变更: 在 StreamStats 类型说明中新增"获取当前编码格式"相关接口(getVideoCodecType),支持获取当前编码格式。详... 云手机客户端 SDK V1.17.0 版的发布说明如下: Web/H5Web/H5 端 SDK 包含以下新增功能和变更: 优化鼠标滚动映射到实例内上下滑动的操控体验。 2022 年 11 月云手机客户端 SDK V1.16.0 版的发布说明如下: AndroidAn...
Fastbot 开源版技术原理与架构
文章来源|字节跳动软件工程实验室Repo | github.com/bytedance/Fastbot\_Android **0****1** **问题背景**近年来,移动应用程序的数量呈现爆炸性增长,随之而来的是用户对应用程... 模型扩展:如果当前 GUI 页面中的某些超事件尚未包含在概率模型𝑀中,Fastbot 将启动扩展策略,随机选择一个尚未执行的超事件。在实际中有两种可能的情况:1)先前的测试运行可能没有覆盖所有的超事件,2)当前测试应用程...
SDK 概览
云手机客户端 SDK V1.37.0 的发布说明如下: Android Android 端 SDK 包含以下新增功能和变更: 新增 “getVideoCodecType()获取当前视频编码格式”相关接口,视频编码格式参数回调,详细信息,请参考 StreamStats。 新... 云手机客户端 SDK V1.17.0 版的发布说明如下: Web/H5 Web/H5 端 SDK 包含以下新增功能和变更: 优化鼠标滚动映射到实例内上下滑动的操控体验。 V1.16.1(2022/11/30)云手机客户端 SDK V1.16.1 版的发布说明如下: Web...

Android视图中包含的惰性列在滚动时会出现很大的延迟。 -相关内容

Android 14 开始官方支持直接监听截屏,不用观察媒体文件了~|社区征文

> 截屏可以说是手机设备最常用的功能了,Android 系统非常重视截屏方面的体验,近几年的更新都不忘去优化这方面的体验。从一开始仅在通知栏提醒已截屏,到 Android 11 支持在左下角生成截屏缩略图供编辑或分享,再到 Android 12 支持滚动截屏,以及这次的 Android 14 允许 App 直接监听用户的截屏操作。为打造更加标准的监听截屏体验,Android 14 正式推出了受隐私保护的相关 API。简单来说,该 API 允许 App 以 Activity 为单位注册...

关于移动端适配你了解多少? | 社区征文

## 背景介绍> 我们公司的APP是通过安卓写的壳子,里面嵌套了前端开发的Vue页面或者H5页面。H5或Vue再去调用android或者IOS原生写的的方法。之前我接手的部分业务,为保证功能完整性,入口也需要使用H5实现,当时遇到了... 不需要出现滚动条即可正常查看网站的所有内容,且文字图片清晰。这也是我们为什么需要使用viewport的原因。![kkk.jpg](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e1182769b78d45dea13caffe8bac7fc5~tp...

Sigmob

用于填在广告后台 2.2媒体渠道侧1.登录 https://www.sigmob.com/advertiser.html 2. 创建广告填写监测链接 3.联调测试 Sigmob提供自助测试工具 工具地址:https://attrtools.sigmob.cn/catools.html 认证信息: 用户名:mocker_tools密码:1qazXSW@3edFGH%^& 操作说明: (1)访问测试地址,根据操作系统选择iOS、Android(默认安卓)(2)在trackingurl输入点击监测地址、并根据操作系统选择结果输入idfa(对应iOS)、imei(对应Android)(3)...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

Sigmob

用于填在广告后台 2.2媒体渠道侧 1.登录 https://www.sigmob.com/advertiser.html 2. 创建广告填写监测链接 3.联调测试 Sigmob提供自助测试工具 工具地址:https://attrtools.sigmob.cn/catools.html 认证信息: 用户名:mocker_tools密码:1qazXSW@3edFGH%^& 操作说明: (1)访问测试地址,根据操作系统选择iOS、Android(默认安卓)(2)在trackingurl输入点击监测地址、并根据操作系统选择结果输入idfa(对应iOS)、imei(对应Android)(3)...

获取主账号下的直播间实时统计数据

Body参数 类型 是否必选 示例值 描述 PageToken String 否 init 滚动查询 ID。滚动查询方式适用于查询 10,000 条以上数据的场景。使用滚动查询方式时,首次调用接口查询数据时将该参数值设置为 init,第二次调用... Name 取值为 直播间 A 时,则返回直播间名称为 直播间 ABC、直播间 a、企业直播间 ab 等包含 直播间 A 关键词的直播间列表。 SelectTags Array of SelectTags 否 - 根据分类标签信息进行筛选。您可以通过 ListSite...

获取主账号下的用户画像数据

Body参数 类型 是否必选 示例值 描述 PageToken String 否 init 滚动查询 ID。滚动查询方式适用于查询 10,000 条以上数据的场景。使用滚动查询方式时,首次调用接口查询数据时将该参数值设置为 init,第二次调用... WatchDevice String Android 6.0 观众进入直播间使用的终端机型。 ExternalId String 127***1145 观众在第三方平台的唯一标识。您可以根据该关联用户 ID 识别企业自身的用户身份,以便于按需实现用户洞察和进行数据...

Web预置事件及属性

预置事件公共属性 通用预置事件公共属性属性名 属性展示名 SaaS/私有化支持情况 字段类型 数据来源 属性说明或示例 os_name 操作系统 SaaS-云原生/私有化 String 系统 API 取值为ios/android/windo... 滚动条高度 int scroll_width SaaS/私有化 页面滚动条宽度 int page_manual_key SaaS/私有化 页面 manual_key string page_start_ms SaaS/私有化 页面打开时间 int refer_page_title SaaS/私有...

Web预置事件及属性

预置事件公共属性 通用预置事件公共属性属性名 属性展示名 SaaS/私有化支持情况 字段类型 数据来源 属性说明或示例 os_name 操作系统 SaaS-云原生/私有化 String 系统 API 取值为ios/android/windo... 滚动条高度 int scroll_width SaaS/私有化 页面滚动条宽度 int page_manual_key SaaS/私有化 页面 manual_key string page_start_ms SaaS/私有化 页面打开时间 int refer_page_title SaaS/私有...

客户端 SDK 问题

出现报错日志“Caused by: java.lang.RuntimeException: License invalid” 集成 SDK 开始推流时,出现报错日志“Rtmp connecting failed: code2 -121” 集成 SDK 之后,端到端的时延高怎么调优? Android 和 iOS 应用... 此类允许 Web 视图即使在其不可见时也保持可见。这对于希望在后台继续加载内容的 Web 视图的情况很有用,例如当用户滚动列视图时。 代码示例如下: typescript class BackgroundVisibleWebView @JvmOverloads cons...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询