其他分享
首页 > 其他分享> > Jetpack Compose What and Why, 6个问题,2021高级Android笔试总结

Jetpack Compose What and Why, 6个问题,2021高级Android笔试总结

作者:互联网

以Button为例, 在传统的UI里, 它是单继承体系下的一个类: Button -> TextView -> View. 而在Compose的世界里, 它只是一个@Composable的方法, 里面包含了其他composable, surface, row等. 举例: list->detail两个界面, 可以通过提取方法参数来达到两个界面的composable复用.

劣势:

3.这个技术使用的场景.

Jetpack Compose的使用场景是取代原来的Android View写法(xml, 在代码里实例化View对象再添加到View hierarchy里等), Jetpack Compose用全新的方式来写UI, 即将成为Google Android标准写法.

注意这里的改变除了UI写法的改变, 还是一种状态管理思想的转变. 声明式, 单向数据流, 单个数据源. Android内部的模式近年来一直追求的无外乎就是数据和View的分离, View的无知与自动更新, 清晰的逻辑管理和分离, 可测试性等等.

除了与View强相关的这一层(ViewModel)外, 其他的业务逻辑, 数据交互等被影响不大, 所以即便app决定逐渐迁移到Compose, 也只用管View绘制以及和View相邻的这一层.

4.技术的组成部分和关键点.

Jetpack compose的总体特点:

Composable functions

Compose的使用方法: 定义一系列的composable functions: 接收数据, 发射UI元素.

@Composable
fun Greeting(names: String) {
Text(“Hello $name”)
}

Composable方法的特点:

还有一个小区别就是不同于普通的kotlin方法命名规范, composable方法名的首字母要大写, 因为它此时代表的是一种widget.

Recomposition

Compose framework会很机智地选出有变化, 需要重新绘制的部分.

在Compose中, 如果调用composable function, 传入了新数据, 会使得方法被recomposed: 这个方法发射的widgets会根据需要进行重新绘制.

因为重新绘制整个UI tree会花销比较大, 所以实际上composable function只有input改变的才会被重新绘制, 对于那些参数没有变化的方法和lambda, 其实是skip掉的, 这样才能提高recompose的效率.

所以, 永远不要依赖于执行composable function的side-effects, 因为recomposit

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

ion有可能会被skip掉.

side-effects包括:

由于composable functions有可能会被逐帧执行(比如动画期间), 所以它应该足够的快, 如果需要耗时的操作, 可以考虑后台的coroutine.

5.技术的底层原理和关键实现.

Compose的几个特点:

关于Compose的底层原理, 目前还没找到一个官方的文档或者架构图. 因为可能大家都还在学习怎么使用, 这项技术的底层实现细节还没有被热烈讨论起来. 这里有个问题: stackoverflow.com/questions/5…

从使用者的角度揣测一下Compose的原理: 虽然Composable使用了注解@Composable, 但是却没有添加注解处理器(kapt), 所以并不是依靠注解在编译期生成代码.

在添加依赖的时候需要在build.gradle里添加:

composeOptions {
kotlinCompilerExtensionVersion compose_version
}

所以它和kotlin的编译器有关系.

这个视频: Understanding Compose (Android Dev Summit '19)在17:18开始讲实现原理.

@Composable更像是一个语言的关键字. 可以类比suspend, 有以下几个共同点:

部分更新

用了定制化的Kotlin编译器插件, 数据改变时, 受数据影响的composable的方法会被重新调用.

6.已有的实现和它之间的对比.

Android View和Jetpack Compose的对比.

Android View和Jetpack Compose的相似点:

Jetpack Compose改进了View系统的哪些地方:

Flutter和Jetpack Compose的对比.

Jetpack Compose和Flutter的相似点:

标签:What,Compose,Jetpack,Composable,UI,Android,View
来源: https://blog.csdn.net/zuihao12366/article/details/122047250