Bilibili-超能用户榜入口优化-技术方案反思与总结

目录

客户端实现:

高能用户入口实现逻辑:

接口服务信息(服务端下发):

执行方案:

(1)数据类新增服务端下发字段

​编辑

(2) UI添加

寻找思路:

(3)超能用户icon显示逻辑

找到url数据链路

icon_show数据链路

(4)添加跳转逻辑


客户端实现:

  1. 在榜单内用户荣誉中间加入高能用户按钮(icon仅主播和用户主态可见)
  2. 神秘人不显示高能用户按钮
  3. 点击按钮即可跳转高能用户榜单

高能用户入口实现逻辑:

接口服务信息(服务端下发):

客户端用户数据,是服务端随时下发更新的

用户App通过网络请求接口获取《服务端的下发数据》来更新URI和实现具体操作

执行方案:

~对应位置显示icon(已实现)

~添加神秘人和show_icon监控(已实现)

~设置点击事件成功跳转(已实现)

~加入点击埋点(已添加)

(1)数据类新增服务端下发字段

@JvmField

@JSONField(name = "服务端定义字段名称")

BilLiveContributionRank中添加字段icon_jpg和icon_jump_url(通用配置)

BiliLiveMobileRank.RankItem添加字段icon_show(个体用户)

(2) UI添加

寻找思路:

在Android Studio的Running Device添加数据线连接设备;

通过Toggle Layout Inspector找到对应控件位置

找到解析此整个xml文件的代码位置

文件夹下定位xml文件位置,使用select Opened File

选中xml文件,使用Alt+F7 或 Find Usages找打具体解析xml资源位置

如图:

处理解析位置,位于ContributionTopRankHolder类内部,因此定位到View代码位置

(3)超能用户icon显示逻辑

找到url数据链路

在具体业务逻辑实现位置,通过数据链路获取

在LiveRoomGoldRankFragmentV4中golaRankData就是相关数据类的livedata形式,也是获取到的下发数据,后续直接调用使用即可

接口获取网络数据-》ViewModel回调拿到-》传递给FragmentA-》FragmentA初始化FragmentB为B中对应属性赋值,B最终拿到网络数据

FragmentV4中一个属性goldRankData疑似

从GoldPageV2的属性rankData拿到的值

GoldPageV2实例化的时候,调用ViewModel中值为其赋值

在网络接口中,回调数据赋值给mContributionRankData

数据源-网络接口请求数据


icon_show数据链路

因为icon_show属于个人用户字段,onBind方法内获取每个用户RankTopData

找到RankTopData数据类实例化

发现在一个Observer调用的get方法

又回到goldRankData,只要他变化则触发上面接口实现

所以数据源还是最终又从goldRankData链路得到。

(4)添加跳转逻辑

利用接口ILiveContributionApiProvider回调

接口方法navToSuperUserEvent,分别在播端,看端实现跳转逻辑
看端在LiveRoomTabPageLandFragment实现接口,并添加埋点

播端在LiveStreamRankPanel实现接口并添加埋点

(5)具体方法体

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue实现图片无限滚动播放

本人vue新手菜鸡,文章为自己在项目中遇到问题的记录,如有不足还请大佬指正 文章目录 实现效果代码展示总结 因为刚接触vue,本想着看看能不能用一些element的组件实现图片的轮播效果,尝试使用过element-UI里的走马灯Carouse&#x…

MySQL缓存使用率超过80%的解决方法

MySQL缓存使用率超过80%的解决方法 一、识别缓存使用率过高的问题1.1 使用SHOW GLOBAL STATUS命令监控1.2 监控其他相关指标二、分析缓存使用率过高的原因2.1 数据量增长2.2 查询模式变化2.3 配置不当三、解决缓存使用率过高的方法3.1 调整Buffer Pool大小3.1.1 计算合理的Buff…

LeetCode【0036】有效的数独

本文目录 1 中文题目2 求解方法:python内置函数set2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 请根据以下规则判断一个 9 x 9 的数独是否有效。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线…

UNIAPP发布小程序调用讯飞在线语音合成+实时播报

语音合成能够将文字转化为自然流畅的人声,提供100发音人供您选择,支持多语种、多方言和中英混合,可灵活配置音频参数。广泛应用于新闻阅读、出行导航、智能硬件和通知播报等场景。 在当下大模型火爆的今日,语音交互页离不开语音合…

成都睿明智科技有限公司解锁抖音电商新玩法

在这个短视频风起云涌的时代,抖音电商以其独特的魅力迅速崛起,成为众多商家争夺的流量高地。而在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司犹如一颗璀璨的新星,以其专业的抖音电商服务,助力无数品牌实现从零…

Llama旋转位置编码代码实现及详解

旋转位置编码RoPE 在旋转位置编码与Transformer和BERT之间的区别中介绍了旋转位置编码(RoPE)的特点和优势,这种输入长度动态可变的优势使得在Llama编码时,不需要掩码将多余的嵌入掩住。为了详细了解RoPE是如何实现的,…

遇到“msvcr120.dll丢失”要怎么解决?详解msvcr120.dll的解决方法

遇到“msvcr120.dll丢失”错误通常表明你的系统缺少一个关键的DLL文件,这是Microsoft Visual C 2013的一部分。这个问题可能导致某些程序无法运行,影响电脑性能。不过,解决这一问题并不复杂。接下来,本文将向你展示几种简单的修复…

【机器学习】平均绝对误差(MAE:Mean Absolute Error)

平均绝对误差 (Mean Absolute Error, MAE) 是一种衡量预测值与实际值之间平均差异的统计指标。它在机器学习、统计学等领域中广泛应用,用于评估模型的预测精度。与均方误差 (MSE) 或均方误差根 (RMSE) 不同,MAE 使用误差的绝对值,因此它在处理…

项目功能--运营数据统计

一、需求分析 通过运营数据统计可以展示出体检机构的运营情况,包括会员数据、预约到诊数据、热门套餐等信息。我们要通过一个表格的形式来展示这些运营数据。如下图: 二、代码实现 实现步骤: 步骤一:定义数据模型,通过…

网络安全技术在能源领域的应用

摘要 随着信息技术的飞速发展,能源领域逐渐实现了数字化、网络化和智能化。然而,这也使得能源系统面临着前所未有的网络安全威胁。本文从技术的角度出发,探讨了网络安全技术在能源领域的应用,分析了能源现状面临的网络安全威胁&a…

wangeditor富文本编辑器以文本的形式展示公式

最终展示的效果 1.首先将要传给后端的富文本值进行转化 //假设workContent是富文本写入的值this.workContent this.escapeHTML(this.workContent)//通过escapeHTML方法转化传给后端 methods:{escapeHTML(str) {return str.replace(/&/g, &) // 将 & 替换为…

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪

内置RTK北斗高精度定位的4G执法记录仪、国网供电服务器记录仪BD311R 发布时间: 2024-10-23 11:28:42 一、 产品图片: 二、 产品特性: 4G性能:支持2K超高清图传,数据传输不掉帧,更稳定。 独立北…

【自学笔记】神经网络(2) -- 模型评估和优化

文章目录 划分数据集训练集和测试集训练误差 测试误差交叉验证测试集 偏差与方差偏差方差表现基准 学习曲线error - train set sizeerror - degree of polynomial 数据增强迁移学习项目的完整周期样本不平衡问题精确率和召回率精确率与召回率的平衡 划分数据集 我们当然希望把所…

Windows 局域网IP扫描工具:IPScaner 轻量免安装

IPScaner是一款258KB的工具,具备快捷修改IP、批量扫描、地址计算等功能,自动识别本机IP网段,快速查看IP使用情况,适用于监控维护、企业IT运维等场 软件功能介绍: 1)快捷修改本地IP、IP批量扫描、IP地址计算…

2024 年Postman 如何安装汉化中文版?

2024 年 Postman 的汉化中文版安装教程

SQL面试题——飞猪SQL面试 重点用户

飞猪SQL面试题—重点用户 在一些场景中我们经常听到这样的一些描述,例如20%的用户贡献了80%的销售额,或者是20%的人拥有着80%的财富,你知道这样的数据是怎么算出来的吗 数据如下,uid 是用户的id ,amount是用户的消费金额 |uid|amount| ---…

fork函数详解

前言 之前我们提到,创建子进程的时候,需要使用fork()函数,其中分别有id 0和id >0的if函数,但是实验表明,两个if函数中的内容都得到了实现。按照我们之前所学,一个变量同一时间只能有一个值,…

OkHttp网络请求框架

添加依赖 在 build.gradle 文件中添加 OkHttp 依赖: dependencies {implementation("com.squareup.okhttp3:okhttp:4.10.0") }使用OkHttp发起GET请求 同步请求 public class MainActivity extends AppCompatActivity {// Used to load the okhttptes…

Ue5 umg学习(三)文本控件

从通用中,选择文本控件 将其拉入画布中,和图像控件使用方法类似。 右边是字形,尺寸,字间距。 可以导入字形,使用,不过要注意,不要导入FZ系字体,不然可能会涉及侵权 修改尺寸会修…

wireshark演进之路——从GTK到Qt

Wireshark 自 1998 年诞生至今,已有超过26年的历史了。它最早由 Gerald Combs 创建,最初名为 Ethereal。2006 年,Ethereal 更名为 Wireshark,并继续发展成了全球领先且人尽皆知的网络协议分析工具,其GUI演变就是其中非…