logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Android WebSocket 深度解析与实战:原理、封装与最佳实践

在现代 App 中,实时通信已成为刚需:聊天室消息秒达直播间弹幕即时刷出股票、币价数据实时刷新这些背后都有一个核心技术支撑:👉WebSocket相比传统的 HTTP 轮询,WebSocket 是真正的「双向实时通信协议面试题答案要点WebSocket 和 HTTP 的区别?HTTP 是短连接,请求-响应模式;WebSocket 是持久双向连接。WebSocket 心跳机制怎么做?客户端定期发送

#android#websocket#网络协议 +2
Kotlin 实现社交 App 音视频模块:语音录制、播放、暂停与进度控制全流程封装

在社交类应用中,语音聊天、语音评论等功能是非常常见的。而在 Android 中实现一套录音 + 播放 + 暂停 + 恢复播放 + 时间显示的完整方案,往往涉及:录音管理(启动、停止、超时、失败处理)播放管理(暂停、恢复、播放完成)时间更新与 UI 同步生命周期内的资源释放如果逻辑分散在各个界面中,会造成维护困难。因此我们需要一个高内聚、低耦合的封装类。通过本次封装,我们实现了一个:支持录音/播放/

#音视频#android#android studio +1
Kotlin 高级语法复习:sealed class、Flow、inline、crossinline等分析,使用实例

关键字功能特点常用场景受限继承结构强类型状态控制状态管理、Result 封装Flow异步流处理冷流、挂起、安全数据流、网络加载、事件流inline内联优化减少函数对象、提升性能高阶函数、DSL、工具函数禁止非局部返回保证 lambda 安全异步回调、线程任务。

#kotlin#echarts#开发语言 +2
Kotlin中的flow、stateflow、shareflow之间的区别和各自的功能

FlowStateFlowSharedFlow) 是中最核心的三种类型,常用于 MVVM 架构中实现。

#kotlin#android
Kotlin 实现社交 App 音视频模块:语音录制、播放、暂停与进度控制全流程封装

在社交类应用中,语音聊天、语音评论等功能是非常常见的。而在 Android 中实现一套录音 + 播放 + 暂停 + 恢复播放 + 时间显示的完整方案,往往涉及:录音管理(启动、停止、超时、失败处理)播放管理(暂停、恢复、播放完成)时间更新与 UI 同步生命周期内的资源释放如果逻辑分散在各个界面中,会造成维护困难。因此我们需要一个高内聚、低耦合的封装类。通过本次封装,我们实现了一个:支持录音/播放/

#音视频#android#android studio +1
Android 架构演进全解析:MVC、MVP、MVVM、MVI 图文详解

从命令式到响应式,从混乱到优雅。一文彻底搞懂 Android 四大架构模式。模式数据流方向优点缺点推荐场景MVC双向简单易懂耦合高小型项目MVP单向解耦清晰,可测试Presenter 冗余中型项目MVVM双向响应式更新调试复杂Jetpack MVVM 项目MVI单向状态集中、可回溯实现复杂Compose / 新架构项目Android 架构从 MVC → MVI 是逻辑解耦与状态统一的演化。想简单快

#android#架构#mvc +2
Attempt to invoke interface method ‘java.lang.Object[] java.util.Collection.toArray()‘ on a null obj

对于这个问题:Attempt to invoke interface method ‘java.lang.Object[] java.util.Collection.toArray()’ on a null object reference很明显是集合的问题:大部分是因为集合为空null,所以使用到集合的地方最好判空,特别是网络请求给集合赋值后其他地方需要用到,所以如果网络请求慢或是赋值出错,加下

ANR问题

一、《Android ANR监测诊断以及解决办法》1.Android Vitals:向你警告ANR问题的发生,上架Google play才可以。2.最经常发生的ANR的几种情况:在主线程中执行IO操作在主线程执行长时间的计算主线程执行同步Binder操作访问另一个进程,该进程执行很长时间再返回非主线程持有lock,导致主线程等待lock超时主线程和另一个线程发生死锁,可以是位于当前进程或者通过Bi

#android
Attempt to read from field ‘android.os.VibrationEffect com.android.server.VibratorService$Vibration.

对于这个问题:Attempt to read from field 'android.os.VibrationEffect com.android.server.VibratorService$Vibration.mEffect' on a null object referencecom.fw315relate.client.core.RawPlayer.play(RawPlayer.java:

到底了