IT技术博客大学习 共学习 共进步
首页 / Trinea
IT 2016-04-20 13:13:14 / 累计浏览 1,380

Facebook App 优化工具 ReDex 优化的 6 点及未优化的一大方面

这篇讲的是Facebook开源的Android优化工具ReDex。它直接作用于编译后的Dex字节码,目标明确:减小APK体积并提升启动速度。经过Facebook的实测,它能使启动速度提升超过20%,Dex大小减小25%,对内存紧张的设备效果尤为显著。 文章详细拆解了ReDex的6项核心优化。其中最具特色的一项是“基于启动反馈的类布局优化”:工具会先在测试环境中运行APK,追踪启动时实际加载的类,然后将这些类的字节码“前置”到Dex文件头部,从而大幅减少应用启动时在闪存中查找类文件的时间。除此之外,还包括混淆压缩、函数内联、删除无用接口与代码、清理元数据等常规但高效的手段。 作者还点明了ReDex“管道式”的架构设计,每个优化阶段都可像插件一样灵活组合或关闭。同时,文章也提醒了使用中的注意事项,例如需为JNI调用和反射保留特殊配置、处理后的APK必须重新签名,以及混淆优化可能影响崩溃堆栈收集等实际问题。 如果正在寻找一种能与现有编译流程集成、并对APK体积和冷启动有硬性优化需求的方法,那么深入理解ReDex的这些具体优化点和配置逻辑,会带来直接的启发。

IT 2016-03-31 22:23:20 / 累计浏览 2,600

EventBus 源码解析

这篇深度技术文章剖析了Android开发者常用的事件总线框架EventBus的内部工作原理。作者从Event、Subscriber、Publisher这些核心概念入手,逐步解析了EventBus的注册订阅与事件分发机制。 文章通过清晰的类关系图和核心类功能介绍,揭示了EventBus内部如何通过subscriptionsByEventType这个核心数据结构,高效地实现事件到订阅者的匹配。同时,详细说明了post事件后,EventBus如何根据订阅者声明的ThreadMode(如PostThread、MainThread、BackgroundThread、Async),智能地决定是在当前线程、主线程还是异步线程中执行事件处理函数,确保了线程安全。 对于想深入理解Android消息机制和组件解耦实践的开发者,这篇文章提供了一个关于如何设计一个优雅、高效的发布-订阅系统的清晰实现思路。

IT 2016-03-23 23:32:09 / 累计浏览 2,480

Android 三大图片缓存原理、特性对比

这篇技术分析深入对比了 Android 开发中三大经典图片缓存库:Universal ImageLoader、Picasso 和 Glide。作者从源码出发,剖析了它们的整体设计流程与核心模块,如 ImageLoader 的引擎、Picasso 的调度器、Glide 的生命周期管理等,并提炼出多级缓存、高可配置性等共同优点。 文章重点在于揭示三者的关键差异:ImageLoader 以功能全面和缓存算法多样见长;Picasso 背靠 Square 生态,具备流量监控和智能网络适配,但本地缓存依赖 OkHttp;Glide 则更像媒体缓存,它深度整合 Android 生命周期,并在内存管理上做了精巧优化(如 ActiveResources 计数和缓存缩略图),默认使用 RGB_565 格式以节省内存。 通过这种从原理到特性的系统对比,文章为开发者提供了清晰的选型参考:ImageLoader 适合需要高度定制化和传统方案的项目;Picasso 在追求代码简洁与网络状态感知的场景中表现出色;而 Glide 凭借其“内存友好”特性和对生命周期的良好支持,尤其适合界面频繁刷新、媒体类型复杂的应用。

IT 2016-03-23 13:49:01 / 累计浏览 3,900

移动端网络优化

这篇讲的是如何系统优化移动端的网络请求性能,覆盖 Android、iOS 和 H5。作者将整个过程拆解为连接服务器和获取数据两个阶段,并针对每个阶段提出了具体可行的优化策略。 在连接阶段,文章重点介绍了跳过 DNS 解析的 IP 直连方案,以及通过服务器多地域、多运营商部署来缩短物理链路距离。在数据获取阶段,则详细拆解了从开启 Keep-Alive 复用连接、合并请求,到对请求和响应数据进行 Gzip 压缩、使用更精简的格式(如 JSON 替代 XML、WebP 替代传统图片)等一系列手段。此外,文章还探讨了利用 CDN 缓存、实施增量更新与断点续传等高级策略。 除了这些核心方案,文中也提到了预取、分优先级延迟请求以及多连接等补充优化思路,并强调了数据监控在验证优化效果中的必要性。整篇文章从原理到实践,为开发者梳理了一套从客户端到服务端的移动端网络性能调优实用指南。

IT 2016-03-22 22:15:51 / 累计浏览 2,520

关于开源,关于 GitHub, 关于 Android

这篇讲的是作者从Android与GitHub的并行增长出发,对开源生态与实践的思考。他通过两组2007-2013年的增长曲线,直观展示了移动设备爆发与GitHub繁荣的潜在联系,并调侃Android开发者因开源而更“幸福”。 基于此,作者重点分享了如何“用好”开源项目。他提出了一个针对Android库的协作分析项目,并给出了具体的选型标准:必须谨慎对待GPL协议,理解库的实现原理是使用前提,同时需考察功能、文档、稳定性与扩展性。对于源码修改,他强调应尽量采用包装方式,若必须修改则务必回馈社区,让代码保持在开源的“大陆”上,而非变成“孤岛”。 文章最后还总结了一个优质开源项目应具备的要素,如规范的README、清晰的协议声明和便捷的联系方式等。整体上,这不是一篇空谈理论的文章,而是一位实战派开发者关于如何选择、使用乃至回馈开源项目的经验谈。

IT 2016-03-22 22:11:08 / 累计浏览 5,480

献给有裸辞想法的朋友们

这篇讲的是一位前阿里员工从自身职业经历出发,给正在考虑裸辞的技术人提供务实建议。 作者校招进入阿里做Java Web,因对Android开发产生兴趣,在职自学一年后选择裸辞,转型成为Android开发者。他详细复盘了当时的决策过程:一方面因为内部平台成就感低,另一方面确实需要整块时间学习和开发App。裸辞后他休息了两个月,骑行川藏线,之后加入了Android ROM创业公司。 不过,文章的重点在于后续的反思与建议。作者明确表示“不建议裸辞”,并深入剖析了核心原因:裸辞后作为失业者,求职和谈薪都会处于被动,尤其对于转技术方向的人,技能不熟练会成为明显短板;同时,持续的消费和收入中断会带来切实的生活压力。相比之下,他强烈建议“内部转岗”。BAT等大公司内部通常有不错的技术资源和转岗机制,这既能让你切换到感兴趣的领域,又能规避裸辞带来的职业空窗期风险。 文章最后提醒,技术学习终究要靠自己,不必过度追求“共同进步”的环境。对于“打杂”期感到不满的新人,他建议先理清自身目标与能力,对自己的职业规划负责。这是一篇带着过来人温度与理性计算的职业规划指南。