Android基础
文章平均质量分 88
时小雨
无人扶我青云志,我自踏雪至山巅。
若是命中无此运,亦可孤身登昆仑。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Kotlin协程与响应式编程深度对比
特性说明类同步代码风格使用同步方式写异步代码,逻辑清晰轻量级单个JVM可运行数万个协程结构化并发自动取消子协程,避免资源泄漏灵活调度轻松切换线程上下文取消支持内置可取消机制特性说明声明式数据流处理通过操作符组合表达复杂数据转换强大的背压支持内置多种背压处理策略实时数据响应自动传播变化,适合实时系统多源数据组合轻松合并多个数据源可预测的数据管道纯函数操作符使数据流更可预测选择协程当需要清晰表达异步任务流程处理离散、独立的异步操作需要轻量级并发(数千以上任务)原创 2025-07-09 07:21:33 · 1018 阅读 · 0 评论 -
Kotlin协程超时控制:深入理解withTimeout与withTimeoutOrNull
: T?nullprintln("自定义超时处理:执行回退逻辑")}) {println("开始执行操作...")"操作结果"println("最终结果:resultprintln("自定义超时处理:执行回退逻辑") }) {println("开始执行操作...") delay(1000) "操作结果" } println("最终结果: $ result ") }开始执行操作...自定义超时处理:执行回退逻辑最终结果: null核心函数:超时抛出:超时返回null资源安全始终使用。原创 2025-07-08 07:26:41 · 1217 阅读 · 0 评论 -
Android性能优化:过度绘制分析与层级优化实战
null,// 问题1:每次绘制创建新对象// 问题2:绘制超出边界的内容= null,// 复用Paint对象// 复用Rect对象// 1. 获取可见绘制区域// 2. 裁剪绘制区域// 3. 只绘制可见内容层级扁平化:优先使用ConstraintLayout,减少嵌套背景精简:移除不必要的背景设置延迟加载:ViewStub按需加载复杂布局绘制优化:自定义View使用clipRect限制绘制区域资源复用:避免在onDraw中创建对象合理分层:策略性使用硬件层。原创 2025-06-27 06:45:07 · 1226 阅读 · 0 评论 -
Android存储选择指南:应用专属目录 vs 媒体库目录
优先选择应用专属目录:适用于私有、临时和敏感数据使用MediaStore处理公共内容:用户生成的媒体和共享文件遵循Scoped Storage规则:特别是Android 10+设备避免直接文件路径:特别是操作MediaStore时权限精细管理:Android 11+使用细化媒体权限生命周期意识:应用专属目录随应用卸载删除用户体验优先:公共文件应出现在正确位置及时清理资源:特别是缓存和临时文件。原创 2025-06-21 07:18:04 · 1208 阅读 · 0 评论 -
Android多进程数据共享:SharedPreferences替代方案详解
避免使用SharedPreferences:在多进程环境中完全避免直接使用SharedPreferences优先选择MMKV:腾讯MMKV是最佳的多进程数据共享解决方案ContentProvider适用场景:需要精细控制数据访问逻辑时使用性能优先原则:减少跨进程通信频率,批量处理数据数据一致性保障:使用同步写入(commit)替代异步写入(apply)安全考虑:对敏感数据使用加密存储在多进程Android应用中,SharedPreferences已不再是数据共享的最佳选择。原创 2025-06-21 07:07:03 · 1025 阅读 · 0 评论 -
Compose与View系统互操作方案
特性自定义 View声明式编程✅ 支持❌ 命令式状态管理✅ 自动响应❌ 手动更新组合能力✅ 无缝嵌入 Compose 布局❌ 有限性能优化✅ 内置优化机制❌ 需手动实现学习曲线低(对 Compose 开发者)高双向集成:使用和实现无缝互操作状态共享:ViewModel 作为跨系统状态管理桥梁混合导航:Navigation 组件统一管理 Compose 和 Fragment主题统一:共享资源文件和设计系统 token性能优先:避免不必要的重组和内存泄漏。原创 2025-06-12 07:30:35 · 1150 阅读 · 0 评论 -
Activity onCreate解析
理解onCreate()系统层:ActivityThread与Instrumentation的协作框架层:Window/View树的构建流程应用层:生命周期与组件的联动通过源码分析可见,Android通过精密的委托机制和回调设计,将复杂的初始化过程封装成简洁的生命周期方法,为开发者提供了高效的编程范式。原创 2025-06-11 07:34:14 · 806 阅读 · 0 评论 -
Android Activity状态保存方法
💡 提示:对于配置变更(如屏幕旋转),建议使用 ViewModel。方案,它能更优雅地保留数据,避免频繁保存/恢复操作。Activity启动。原创 2025-06-10 07:43:29 · 879 阅读 · 0 评论 -
单线程模型中消息机制解析
Android消息机制解析 Android的消息机制通过Message、Handler、MessageQueue和Looper四大核心组件协作实现线程通信。Message作为数据载体,Handler负责跨线程发送和处理消息,MessageQueue按优先级存储消息,Looper则循环取出消息并分发。 关键点: 主线程默认初始化Looper,子线程需手动调用Looper.prepare()和loop() Handler需绑定Looper,通过sendMessage()或post()发送任务 MessageQu原创 2025-06-08 15:18:50 · 827 阅读 · 0 评论 -
Jetpack Compose瀑布流实现方案
摘要 本文详解Jetpack Compose中实现瀑布流布局的两种方案:官方推荐的LazyVerticalGrid方案(通过GridCells.Fixed设置列数,利用aspectRatio控制高度)和兼容方案(手动管理多列LazyColumn)。对比了瀑布流与其他布局的差异,并提供了性能优化技巧,包括图片加载优化(使用Coil的Size.ORIGINAL)、内存优化(remember缓存)和布局优化(ConstraintLayout)。核心代码展示了如何动态计算列数、处理宽高比以及实现交互动画,适用于图片原创 2025-06-07 10:30:19 · 1261 阅读 · 0 评论 -
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
本文深度剖析Android三大传统布局的性能问题与优化方案。FrameLayout通过层级叠加实现极简布局,但需注意叠加顺序;LinearLayout的权重机制可能导致30%以上的性能损耗,建议统一使用0dp+weight组合;RelativeLayout依赖关系复杂易形成测量循环。而ConstraintLayout仅需1次测量即可完成复杂布局,性能显著优于传统方案。文章通过具体代码示例和性能数据对比,为Android开发者提供了可直接落地的布局优化实践方案,有效解决60%以上的界面卡顿问题。原创 2025-06-07 10:28:59 · 1523 阅读 · 0 评论 -
应用启动性能优化与黑白屏处理方案
通过上述方案组合实施,可有效将冷启动时间控制在1秒内,同时消除黑白屏带来的不良视觉体验。⚠️ 注意:可能影响返回动画,需在Activity创建后恢复原主题。使用Play Feature Delivery实现按需加载。即会出现白屏/黑屏(取决于主题颜色)原创 2025-06-06 07:31:28 · 1032 阅读 · 0 评论 -
Android处理大图防OOM
在 Android 中处理大图时,内存占用是关键问题。由于 Bitmap 的像素数据直接存储在内存中,一张高分辨率图片(如 4000x3000)可能占用约。通过上述策略,可显著降低内存占用,有效避免 OOM。实际开发中优先使用 Glide/Picasso 等成熟库,减少手动处理风险。(ARGB_8888 格式下,每个像素占 4 字节)。:自动处理图片缩放、内存/磁盘缓存、生命周期管理。:类似 Glide,提供简洁的 API 管理大图。中为 Activity 添加。原创 2025-06-06 07:30:54 · 834 阅读 · 0 评论 -
进程优先级与组件存活关系解析
这样的多任务系统中。系统通过动态调整进程优先级来决定哪些进程可以保留内存和 CPU 资源,而哪些可能被终止以释放资源。需结合系统机制,通过优化组件设计、合理管理资源、适配后台限制,确保关键功能稳定运行,同时避免资源浪费导致用户体验下降。组件(如 Activity、Service)的生命周期由其所在进程的优先级决定。若进程被终止,所有组件将被销毁。进程优先级与组件存活之间的关系在操作系统资源管理中至关重要,尤其是在像。值(基于进程优先级)决定终止顺序。值越高,越容易被终止。Android 使用。原创 2025-06-05 07:29:42 · 740 阅读 · 0 评论 -
详解图片内存占用的计算原理与代码验证(以500×500 PNG为例)
决定性因素:像素格式(ARGB/RGB)比文件格式(PNG/JPEG)更影响内存平台差异:iOS/Android默认配置不同,需显式指定格式测量原则:始终通过代码而非文件大小计算内存优化黄金法则:降分辨率 → 改格式 → 及时回收。原创 2025-06-05 07:28:55 · 1136 阅读 · 0 评论 -
你用对了吗Requestlayout,onlayout,onDraw,DrawChild
是视图布局(Layout)和绘制(Draw)流程中的关键方法。它们的作用和调用顺序密切相关,但职责不同。在 Android 的视图系统中,原创 2025-06-05 07:28:32 · 1034 阅读 · 0 评论 -
Android动画全面解析:属性动画与补间动画原理、实现与对比
本文详细对比了Android中的补间动画和属性动画两种技术。补间动画通过视图矩阵变换实现视觉效果但不改变实际属性,适用于简单场景;属性动画则通过动态修改对象属性值实现,支持任意对象和自定义动画,灵活性更高。文章从原理、代码实现、使用步骤和核心差异全面解析两种技术,帮助开发者根据需求选择合适方案。补间动画操作简单但功能有限,属性动画功能强大但稍复杂,掌握二者特点能有效提升应用动画效果。原创 2025-06-04 07:00:14 · 1304 阅读 · 0 评论 -
掌握 MotionLayout:交互动画开发
本文对比解析了Android开发中四大热门第三方动画库:Lottie适用于复杂矢量动画,支持JSON格式和动态修改;MotionLayout基于ConstraintLayout实现布局过渡动画,适合交互式视图切换;AndroidViewAnimations提供预定义动效,简化常见动画实现;Rebound则专注于物理弹簧动画效果。文章详细介绍了各库的集成方式、代码实现及适用场景,并分析了优缺点,帮助开发者根据项目需求选择合适方案。Lottie适合设计师协作场景,MotionLayout擅长布局过渡,Andro原创 2025-06-04 06:59:46 · 1291 阅读 · 0 评论 -
Android 布局优化:掌握 <include> 与 <merge> 的实战技巧
维度<include>自定义 View复杂度简单,仅 XML 布局复用高,需处理测量、绘制逻辑灵活性适合静态布局复用适合动态交互或复杂 UI 逻辑性能开销低较高(若逻辑复杂)典型场景标题栏、按钮组、表单控件图表、自定义动画、复杂组合控件<include>指标优化前优化后布局层级5 层3 层测量时间(ms)12.38.1代码行数200 行120 行。原创 2025-06-04 06:59:15 · 1365 阅读 · 0 评论 -
Android ContentProvider多表关联查询
/ 用户表// 订单表@Override// 创建视图(可选)// 基础URI// 多表查询URIstatic {// 添加其他URI匹配规则...架构建议将数据库操作与UI层分离使用Repository模式封装数据访问通过ContentObserver实现数据更新通知调试技巧性能监控// 启用数据库跟踪.build());关键在于理解ContentProvider的工作机制和SQLite的查询优化原理。原创 2025-06-03 07:33:58 · 684 阅读 · 0 评论 -
Android后台任务管理利器
但随着系统对后台限制的收紧(如Android 8+的后台执行限制),传统方案逐渐暴露兼容性差、代码冗余、难以维护等问题。本文将深入解析WorkManager的核心场景、代码实现、使用技巧,并对比传统方案,助你彻底掌握这一利器。立即将WorkManager集成到你的项目中,享受高效、简洁的后台管理体验!在Android开发中,后台任务管理一直是开发者的痛点。:数据同步、日志上传、本地数据处理等无需即时完成的任务。:任务顺序执行(如先下载、再处理、最后上传)。:持久化任务,保证最终执行。原创 2025-06-03 07:30:24 · 1180 阅读 · 0 评论 -
Android后台服务保活简介
在 Android 系统中,后台服务保活(防止应用进程被系统回收或限制)是一个复杂且敏感的话题。由于 Android 系统对资源管理和电量优化的持续改进,传统的保活方案在不同版本中可能失效甚至违反政策原创 2025-06-01 08:45:06 · 788 阅读 · 0 评论 -
ActivityResult API最佳实践指南
通过合理利用ActivityResult API,将请求与结果处理逻辑集中,提升代码清晰度。结合预定义和自定义Contract,适应多样化场景,同时注意生命周期和异常处理,确保应用稳健高效。原创 2025-05-30 07:30:17 · 588 阅读 · 0 评论 -
动态注册广播内存泄漏预防
关键点解决方案生命周期管理在onStart()onStop()或onResume()onPause()中成对注册/注销。避免隐式引用使用静态内部类 + 弱引用持有外部类。避免长期持有不在 Application 或单例中随意注册广播。替代方案使用LiveData或事件总线替代部分广播场景。通过以上措施,可有效预防动态注册广播导致的内存泄漏问题。原创 2025-05-30 07:29:50 · 483 阅读 · 0 评论 -
BroadcastReceiver的8大常用系统广播
在 Android 开发中,用于监听系统和应用发出的广播事件。以下是。原创 2025-05-29 07:27:09 · 661 阅读 · 0 评论 -
前台服务通知栏适配实践
实际开发中建议结合 WorkManager 等后台任务调度方案,最大限度降低对系统资源的影响。原创 2025-05-29 07:25:44 · 616 阅读 · 0 评论 -
能不能稍微优化一下WebView,让它更好用一点
启动优化:预热 + 并行 + 复用渲染核心:硬件加速 + Web Worker网络瓶颈:离线包 + 智能缓存策略通信选择:DSBridge 优于传统 Bridge内核升级:X5 解决兼容性痛点监控体系作者建议根据业务场景选择技术组合,建议从缓存优化和X5 内核入手,可快速获得显著提升。对于复杂应用,采用DSBridge + 预加载的组合方案,兼顾性能与开发效率。原创 2025-05-28 07:07:09 · 1712 阅读 · 0 评论 -
Android Service启动模式解析
通过理解两种模式的差异及适用场景,可以更高效地设计后台服务,平衡性能与用户体验。)决定了Service的生命周期及其与组件的交互方式。在Android中,Service的两种启动模式(原创 2025-05-28 06:57:48 · 771 阅读 · 0 评论 -
Bundle数据传递限制与替代方案
在Android开发中,使用Bundle传递数据确实存在一些限制,但可以通过多种替代方案解决。原创 2025-05-28 06:57:03 · 1060 阅读 · 0 评论 -
显式与隐式Intent调用对比
通过合理选择显式或隐式 Intent,可以平衡开发效率、安全性和功能扩展性。允许用户选择多个符合条件的应用(例如分享到微信、QQ 或其他应用)。避免被其他应用拦截(显式 Intent 仅对指定组件生效)。调用其他应用的功能(例如打开网页、分享内容、拍照等)。是两种不同的组件间通信方式,它们的核心区别在于。发送全局广播,由多个接收器处理(如通知电量低)。使用系统提供的功能(如拨打电话、发送短信)。启动同一应用内的某个组件(例如从。在 Android 开发中,原创 2025-05-28 06:56:38 · 987 阅读 · 0 评论 -
Activity生命周期全流程详解
摘要:本文详细介绍了Android Activity生命周期的核心方法、流程及最佳实践。通过代码示例展示了onCreate()到onDestroy()各阶段的关键操作,包括状态保存与恢复、资源释放等。分析了不同场景(如启动、返回、旋转)的生命周期调用顺序,并提供了表单保存、防内存泄漏等实用解决方案。附生命周期流程图解和常见问题处理方法,帮助开发者合理管理Activity资源与状态。原创 2025-05-27 05:02:20 · 655 阅读 · 0 评论
分享