JTalk《0325第四期-Android进阶之旅》总结

JTalk第四期《Android进阶之旅》活动结束啦,这次讲师带来了哪些干货? 有幸参与本次活动,将本次JTalk讲师分享内容进行了一个小总结,希望能帮到未能到场的同学们~ 受限本人水准,总结可能稍有偏差或者不到位不清晰之处,还望见谅并请指出~

R lab移动端团队技术架构体系及演进->子成 didi

技术演进的历史

  • activity、fragment,view、control=>期望抹平android、ios平台差异

  • 动态下发ui组合配置(不同国家不同地区等区分方式)

  • 期望能下发业务逻辑

Nova轮子

内部开发框架

  • 代码高度复用

  • 快速上线

Skeieton

反fragment联盟(即是view又是control)

概念:router->数据传递/序列化

目前大量处在mvp->后期迁移为mvvm

简化activity、fragment生命周期

分层:

  1. appication层。提供router等
  2. service。基于数据展开
  3. data access。 网络,存储

Dsl&compiler

  1. 使用注解的方式处理之前通过负载方法搞定的代码-Java的版本略显拙略(Now)
  2. 在Kotlin的Skeleton版本中提供更合理的实现(Future)

Router

  1. 界面之间解藕(Now)
  2. 参考前段Router实践,彻底实现View的无状态化(Future)

Thinking

  1. Ability。 Nova Foundation
  2. Principle。 Nova Skeieton
  3. Utility。 support、design、widget跨多项目使用
  4. Engineering。 多个项目统一构建管理
  5. Business。

goto开发规划

other

  1. 思维纠偏

    限制自己的是:思考深度,对业务的理解力

  2. 走出舒适区

    逃离自己的舒适区,拓展更多

  3. 思考本质

    不能停留在API阶段,深入思考理解内部底层设计及实现

  4. 理解业务,助力业务

  5. 迁移

    快速进入某个领域,在于自己的知识迁移能力

  6. 机遇

    发展和机遇有一定相关

QA

Q: 对测试的友好支持

Router不同场景的入口,方便测试
复制代码

Q: 知识迁移

方法论、概念的迁移
复制代码

Q: 业务角度看MVP、MVVM选型

数据量小:MVP足够且方便用
大数据量:电商等,数据处理多,很痛苦MVVM会较好
        强数据和强交互的划分
复制代码

Android组件化的正确姿势 ->张明庆 得到

高高山顶立,深深海底行

组件化面临三座大山

  1. 业务开发时间太紧

  2. 业务过于庞大

  3. 隐藏的阻力

组件化:需要站在更高的山去看他们

实施设计方案的态度

深深海底行->沉入代码

为什么要组件化

  • 用包来区分模块

  • 用module区分模块

------以上胖体系(巨大开发包袱/拖慢开发节奏/下班晚)------

  • 组件化

  • 插件化

  • 组件化/插件化阵营

组件化使用的人多,开源内容少

组件化设计时容易和业务强耦合

  • 为什么不是插件化
    1. 除了动态添加,组件化能实现插件化所有功能
    2. 组件化学习曲线更加平滑
    3. 插件话不可避免进行系统Hook,9.0以上前途未卜

高高山顶立

  1. 代码搬家,隔离结偶

    组件单独调试

    避免资源冲突

  2. 组件生命周期

    运行时动态打开组件(加载)

    运行时动态关闭组件->ABTest(卸载)

    组件降维H5(降维)

    更庞大需要更多

  3. 交互互通有无

    每个组件怎么提供服务

    怎样做到更方便的服务发现

    服务接口如何自动化与其他代码剥离

    组件和组件之间的Router

  4. UI跳转

    是否支持scheme跳转

    路由和传递仓鼠是否支持自动注解生成

    是否可以生成清晰的路由->路由表的生成自动

  5. 集成调试

    任何组件能否充当host

    组件由host切换到library是否可以无感知的完成

  6. 代码和资源隔离

    如何做到代码隔离

    语法旧语法功能支持类型代码隔离效果
    implementationcompile编译期间对其他组件不可见,运行期间对其他组件可见jar aar“隔代”编译期间隔离
    apicompile编译和运行期间都可见jar aar没有隔离
    compileOnlyprovided只参与编译jar没有隔离
    runtimeOnlyapk编译期间不可见,运行期间可见jar aar编译期间隔离

compile没法做到资源隔离

runtimeOnly编译不可见,运行可见。其实也不行

  • 可否做到编译期组件不可见,但同时全部组件参与打包?

深深海底行

组件化过程一直都很痛苦

划分项目
  • host
  • 组件
  • 服务发现
  • 业务依赖库
  • 依赖库

怎么开始执行:四部曲

依赖库先行,业务依赖库初步抽离

寻找业务边界,抽离边界清晰的业务模块

将造成组件依赖主项目的模块继续抽离

将主模块抽离成一个host壳子

万事开头难
  • 走出舒适区,做好充足的准备

  • 组件化会长期停留在中间状态

  • 你的app会长期很胖,指望一次成功时不可的

  • 基于组件完全平行,集成交给app即成调试的方案时不可行的

  • 这不是停滞的理由,要抓紧一切时机

  • 无止境的优化

    • 四个维度的优化:工程 组件 页面 类
    • 组件内部:pin分包结构,页面级别隔离甚至内聚
    • 页面内部:MVP MVVM拆分
    • 类:单一职责拆分,代码规范
  • 看好护城河,防止地道战

    • 避免下沉: Event,实现类,公共资源
    • 地道战:广播、sp、db
    • 不知道该不该下沉:不该,明确下沉:该
  • 康威法则 组织架构和架构之间的映射关系

    • 尽量贴近组织结构和产品业务
    • 尽力去反响改变组织结构和产品业务
    • 做不到,回第一条
    • 不要逆行
  • 团队共识 就是:我知道,你知道,我知道你知道,你知道我知道……

    • 得到大多数人的支持
    • 持续的输出正向结果
    • 给更多人赋能,让更多人入坑
    • 建立配套的模块负责人制度等
《得到》组件化成果

和讲师聊骚

实时多媒体SDK性能优化 Powerinfo 许建林。

性能优化流程

测量,分析,优化=>循环

RTC SDK业务流程

采集->预处理->预览->编码->发送->接收->解码->后处理->渲染

优化

紧扣场景做优化

脱离场景谈优化,都是耍流氓

  • 推流首屏时间

  • 屏到屏的延迟

  • cpu占用

  • 内存抖动优化

测量方法

首屏时间 视频慢动作录制。。。。会玩 视屏延迟

优化思路

多操作并行

预操作提前

智能pos架构演进 美团 闫飞

pos机->收银功能整合

客户端架构理解:
  • 业务观:时刻理解业务规则及特点

  • 全局观:关注上下游服务,以全局的视角审视问题

  • 视野观:技术宽度不限于客户端(某一块)

  • 发展观:架构是面临的问题一步步迭代出来的,很少一步到位

  • 运营观:关注产品各项指标

演进
  • 0.5时代

    资源缺乏&业务快速推进->复杂事情简单化,取得0的突破

    架构本身就不是一步到位的事情,如何在短时间内集中稀缺资源推动项目上线?这势必要分清主次、有所取舍,将复杂事情简单化。只有取得零的突破,才有谈演进的资本

  • 1.0时代

    面临着:稳定性、厂商对接复杂度、多版本管理

    索取主动权,思考重新设计

    • 建立硬件抽象层,自研银行卡收银

    • 银行卡收银分层模块化

    • 异常处理:充分暴露异常,而不是试图消灭异常

    下层收集异常,上层处理异常->异常处理模块统一对异常进行处理 埋点:技术侧埋点与产品侧埋点

  • 2.0时代 拥抱开放

    • 建立收银服务层

    • 美团智能支付开放生态

  • 总结

    • 架构没有定义、没有标准,唯有深刻理解业务,围绕业务不断思考不断迭代

    技术离不开业务,努力写简单代码

圆桌

Android前景
1. 业务优先,关注所做工作的上下游,眼界不局限于客户端
2. 不要把自身局限于当前“身份”


1. 追本溯源,当程序员的出发点。享受红利的同时,承担其风险(技术变化快等)
2. 走出舒适区
3. 新技术,去尝试。大前端的趋势,具体技术不能确定

1. 核心:学习能力
复制代码
面试

美团: 校招:基础(数据结构算法等),解决问题能力 社招:解决问题,思考问题的能力

不要试图把握面试主动性:睡个好觉直接去就行了

平常:注重提升个人核心竞争力

面试是一个互动的过程,不要拘束,不要埋头想问题,多互动交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值