Android 开发周报:Android 厂商寒冬将至、Android 内存申请分析

  • 郭亮

2016 年 7 月 19 日

话题:移动Android语言 & 开发架构

  • 《不要再给 MVP 中的 Presenter 写接口了》:几个月前 Google 发布了一个官方 MVP 示例项目,在项目中,Google 首先写一个上帝接口 BasePresenter,然后在每个功能模块里都写了协议类名为某某 Contract,在其中封装了模块下的 View 接口和 Presenter 接口。这种管理方式的好处是,将 View 和 Presenter 管理起来,强化其一一对应的关系,便于操作。不论是否以协议类的方式呈现,现在开发者喜欢让 Presenter 继承接口。而本文观点正好相反,本文的观点不一定正确,但希望能引起你对这个问题的思考。

  • 《Android 内存申请分析》:在做优化的过程,除了关注内存的申请量以及 GC 的情况之外,我们经常需要想方法找出是那些对象占用了大量内存,以及他们是如何导致 GC 的,这意味着我们需要获取对象申请的信息(大小,类型,堆栈等),本文为我们介绍了几种获取对象申请信息的方法。

  • 《为什么 Android 开发者应该使用 FlatBuffers 替代 JSON?》:你可能会问,既然我们已经有很标准的 JSON 以及转换库比如 GSON 和 Jackson,为什么还要使用新的工具呢?不妨先试一下 FlatBuffers,然后你就会发现它比 JSON 快得多。FlatBuffers 是一个高效的跨平台序列化类库,可以在 C++、C#、C、Go、Java、JavaScript、PHP 和 Python 中使用。是 Google 开发的,是为了应用在游戏开发,以及其他注重性能的应用上。

  • 《Unity Android Plugin 开发指南》:本文为我们介绍了如何在 Unity 工程中使用 Android 或者 Java 的库,包括:如何在 Unity 项目中使用 Android Plugin、Unity-Android 相互调用、Unity 接口设计的最佳实践、如何构建 Unity-Android 混合项目、如何调试 Unity 和 Android 代码。本文有助于我们上手 Unity。

  • 《安卓单元测试 (八):Junit Rule 的使用》:一个 JUnit Rule 就是一个实现了 TestRule 的类,这些类的作用类似于 @Before、@After,是用来在每个测试方法的执行前后执行一些代码的一个方法。此外,JUnit Rule 还能做一些 @Before 这些 Annotation 做不到的事情,那就是他们可以动态的获取将要运行的测试类、测试方法的信息。阅读文章,了解 Junit Rule 的更多细节。

  • 《Google I/O 2016 笔记:APK 瘦身的正确姿势》:业务逻辑不断累积、引入的第三方 SDK 不断增加以及图片资源不变变大,APK 瘦身已经是每个 Android 应用开发者不得不考虑的问题了。坊间流传的各种瘦身方法有些切实可行,有的却流毒甚广。本文为我们总结了 2016 Google I/O 大会上提到的瘦身技术。

  • 《Android Vector 曲折的兼容之路》:Android 5.0 发布的时候,Google 提供了 Vector 的支持。Vector Drawable 相对于普通的 Drawable 来说,好处很多,比如:可以自动进行适配、大幅减少图像的体积、使用简单,很多设计工具支持、成熟、稳定,前端已经非常广泛的进行使用了。本文详细介绍了 Vector 的兼容之路,并讲解了 Vector 的使用方法。

  • 《深度理解 Android InstantRun 原理以及源码分析》:Instant Run 是 Android Studio2.0 以后新增的一个运行机制,能够显著减少你第二次及以后的构建和部署时间。简单通俗的解释就是,当你在 Android Studio 中改了你的代码,Instant Run 可以很快的让你看到你修改的效果。而在没有 Instant Run 之前,你的一个小小的修改,都肯能需要几十秒甚至更长的等待才能看到修改后的效果本文详细深度介绍了 Android InstantRun 原理并且结合其源码分析了实现细节。本文有助于我们扩张插件化的思路。

  • 移动Android语言 & 开发架构