Android
文章平均质量分 92
别说我真不会Android
这个作者很懒,什么都没留下…
展开
-
面试题:Android性能优化之崩溃优化+卡顿优化
通过移植底层获取logcat的实现,通过socket直接跟logd交互。优点:比较灵活,预先分配好资源,成功率也比较高。缺点:实现非常复杂卡顿,顾名思义就是用户体感界面不流畅。我们知道手机的屏幕画面是按照一定频率来刷新的,理论上讲,24 帧的画面更新就能让人眼感觉是连贯的。但是实际上,这个只是针对普通的视频而言。对于一些强交互或者较为敏感的场景来说,比如游戏,起码需要 60 帧,30 帧的游戏会让人感觉不适;位移或者大幅度动画 30 帧会有明显顿挫感;原创 2023-03-17 20:10:22 · 391 阅读 · 0 评论 -
Framework面试题—谈谈你对Zygote的理解?
Zygote可以说是Android开发面试很高频的一道问题,但总有小伙伴在回答这道问题总不能让面试满意,在这你就要搞清楚面试问你对Zygote的理解时,他最想听到的和其实想问的应该是哪些?下面我们通过以下几点来剖析这道问题!了解Zygote的作用熟悉Zygote的启动流程深刻理解Zygote的工作原理下面来我们来深入剖析,同时本文已收录到我的Github:里,里面还有更多问题解析整理,大家可以来进行参考学习!Zygote启动流程中需要主要以下2点问题Zygote fork要保证是单线程。原创 2023-03-16 21:12:15 · 112 阅读 · 0 评论 -
揭秘kotlin协程的实现原理
本文介绍了kotlin协程的实现思想,Continuation、CPS和suspend方法的实现,不只是kotlin协程,其他语言的协程的实现思想也是类似的,同时还介绍了kotlin提供的intrinsics方法,它是用于给用户操纵这些Continuation,最后通过intrinsics方法实现了一个简化版的kotlin协程,所以kotlin协程也没有那么神秘,它只是Continuation的应用,它只是在这些Continuation的基础上添加了生命周期管理、父子关系、异常处理、线程切换等逻辑。原创 2023-03-16 16:15:53 · 298 阅读 · 0 评论 -
Flutter 带你从不一样的角度实现LoadingMore(加载更多)
remainingPaintExtent : 可以简单的理解为还有多少 pixel 可以画(不一定对...但是保证,当你的 sliver 从底部滑出去了,这个值就为0)。precedingScrollExtent : 之前的Sliver一共消耗了多少滑动大小(对应下面的scrollExtent),可以用来判断Sliver是否充满 Viewport。viewportMainAxisExtent : 如其名。原创 2023-03-15 18:55:49 · 516 阅读 · 1 评论 -
一文搞懂Android中的MVC、MVP、MVVM架构 (附实现代码)
先来看一下MVC、MVP、MVVM的架构图。从这些架构图中,可以看到每种架构都有3个模块以及数据流动方向箭头。模块在系统架构中,首先要做的就是把系统整体按照一定的原则划分成模块。数据流动模块划分之后,模块之间的通信,就是数据的流动。在Android中,流动数据包括两部分,事件和数据。架构模块和模块之间的数据通信方式构成不同的架构。在这3种架构中,都是把系统整体划分成了3个模块:视图层,数据层,业务层。他们之间的区别在于,模块之间的通信方式(数据流动方向)不一致。原创 2023-03-15 14:51:19 · 1667 阅读 · 1 评论 -
让你易上手的Jetpack DataStore教程
Jetpack DataStore是一种数据存储解决方案,允许使用协议缓存区来存储key-value值或者序列化对象。谷歌的建议是如果当前使用的是SharedPreferences的话,可以考虑迁移到DataStore。DataStore一共有两种类型:Preferences DataStore和Proto DataStore。Preferences DataStore: 使用键存储和访问数据。此实现不需要预定义的架构,也不确保类型安全。原创 2023-03-14 18:54:38 · 364 阅读 · 1 评论