动画类型?属性动画和补间动画的区别?
StringBuffer和StringBuilder区别?
jvm内存模型?
线程池7大核心参数及原理?
Android多进程方式有哪些?各自的优缺点?
Binder机制原理?
App启动流程?
Handler机制原理?
子线程可以更新ui吗?在Activity哪个生命周期?
Activity生命周期?A跳转B执行生命周期?弹出Dialog时Activity生命周期?
屏幕旋转时生命周期?
Activity启动模式及应用场景?A是singerTask,BC默认,DsingleTop,出栈顺序?
java中extends和super的区别?
String s1 = new String(“abc”) 创建了几个字符串对象?
Android中自定义view的流程以及onMeaure()方法调用时机?
什么时候调用View的onmeasure()方法?
为什么okhttp中核心线程数是0?
okhttp拦截器原理?
okhttp中 应用层拦截器和网络层拦截器区别?
synchronized关键字使用场景?
ThreadLocal原理?
jvm垃圾回收机制?回收算法?
RecyclerView缓存机制及原理?各自调用时机?
TV开发焦点问题?如何记忆焦点?
屏幕适配原理?
Android中内存优化?
什么是ANR?ANR类型及发生原因和解决办法?
内存泄漏是什么?发生原因?如何排查?解决方法?
ArrayList和LiskedList区别?
HashMap底层实现原理?扩容原理?
Android中开启多线程的方式?优缺点?
如何让多个线程按顺序执行?
OK HTTP使用了哪些设计模式及优缺点?
setContentView的绘制流程?
App打包流程?
Apk安装过程?
Android常用的设计模式有哪些?说说你的理解?
retrofit原理?
rxjava原理?如何切换线程?map操作符和flatmap区别?背压?
线程池核心参数有哪些?使用流程?拒绝策略?
jvm内存模型?
GC回收机制?如何判断一个对象是否能被回收?gc回收算法?
synchronized和volatile区别?
同步锁?重入锁?可重入锁?
java多线程用法?如何让多个线程按顺序执行?
LiveDate原理?使用过程中遇到的问题?解决方法?
viewmodel原理?
lifecycle原理?
协程原理?优缺点?
Java封装、多态、继承是什么?
Java中抽象和接口的区别?
Java中引用类型有哪些?概念?
Java中树结构和链表结构有啥区别?HashMap原理?55. Java中的线程模型?为啥i++=2?
Java中泛型的理解?
类的加载器,双亲机制,Android的类加载器
Java的虚拟机JVM的两个内存:栈内存和堆内存的区别是什么?
Android各大版本区别?如何适配?
Http和https的区别?
TCP三次握手和四次挥手过程?
TCP、UDP、Http、WebSocket区别?
对称加密和非对称加密?
组件化、模块化、插件化区别?
插件化原理?
Android中如何混淆以及要注意的问题?
Android中SDK开发如何加密及需要注意的问题?
Android中的保活方式有哪些?
Android多屏幕适配方案及原理?
Android中性能优化方式有哪些?
启动优化如何做?内存优化的方式?
自定义View的流程?3种测量模式区别?
Android中事件分发机制?
滑动冲突处理方式?
Android中线程通信方式有哪些?
服务两种启动方式生命周期如何执行?
断点续传原理?
Android中加密方式有哪些?如何进行加固处理?
Android签名机制v1、v2、v3的区别?
项目中遇到哪些问题?你是如何解决的?
蓝牙通信协议有哪些?数据格式?
音频编解码问题?PCM转aac?
视频播放器内核如何切换?
视频无缝播放如何实现?
视频列表跳转详情播放进度保存?
视频列表跳转详情播放状态同步?
视频边播边播如何实现?缓存实现?
播放时默认无声和按音量键调节声音的实现?
视频播放关键帧处理?
视频拖动时进度回弹处理?
视频小窗切换全屏实现?
视频播放在手机锁屏、退到后台和杀手app播放状态处理?
视频播放进度同步和清除进度处理?
视频播放卡顿处理?
视频全屏退到小窗进度、状态同步?
视频高宽不能全部充满屏幕,有黑边的问题?
在视频默认状态或暂停时从某个时间节点开始播放?
4g和WiFi切换流量提示?
串口通信协议有哪些?
常见的串口类型有哪些?
串口帧数据的组成
怎么排查数据收发问题,自发自收检测?
遇到不能发送数据,在接收数据后才能发送要怎么解决?
丢数据,数据被拆分要怎么解决?
串口无响应如何排查?
常见的数据检验方式,在数据比较多的情况,用啥方法转换能避免内存溢出问题?
串口设备主从通信方式?
串口广播组播的理解?
多个进程使用串口数据如何封装接口?
是否有wifi bt usb gps nfc 的串口调试经验?
scoket相关?tcp、udp、mqtt、websocket?
串口通信拆包、分包、丢包处理?113. 线程池原理?
livedata和stateFlow原理?
flow、stateflow、sharedflow、livedata区别?实现原理?
- stateflow需要将初始状态传递给构造函数,而liveData不需要。【与生命周期没有关联,要关联的话有两种方式:
lifecycleScope.launch
、repeatOnLifecycle
】也可以用以下方法来实现1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20class MainActivity: AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
GlobalScope.launch{
repeatOnLifecycle(Lifecycle.State.RESUMED){
println("repeatOnLifecycle RESUMED 已被执行")
}
}
}
override fun onResume(){
super.onResume()
println("onResume 已被执行")
}
}
//输出
//I/System.out: onResume 已被执行
//I/System.out: repeatOnLifecycle RESUMED 已被执行1
2
3lifecycleScope.launchWhenCreated { }
lifecycleScope.launchWhenStarted { }
lifecycleScope.launchWhenResumed { } - 当View进入 STOPPED 状态时,LiveData.observe() 会自动取消注册使用方,而从 StateFlow 或任何其他数据流收集数据的操作并不会自动停止。如需实现相同的行为,需要从 Lifecycle.repeatOnLifecycle 块收集数据流。
LiveData,StateFlow,SharedFlow 使用场景对比