Android开发技术周报 Issue#35
Google Developing for Android 九 - Tools Andorid提供了很多可以帮助我们debug和分析问题的工具,它们可以让你的app拥有更好的性能。这些检测工具涵盖了内存分析,比如 Allocation Tracker(在DDMS和Android Studio中都有)和设备性能。知道这些工具很重要,但更重要的是要真正的使用这些工具,保证你的应用拥有期望的表现(60帧限制,避免垃圾回收器搅 动)。通过尽可能的优化和提高整体体验可以帮助Android更好的整体平台性。 Google Developing for Android 八 - User Interface 正如在第一篇Context介绍种关于GPU讨论的部分所说,很多手机的性能有限,如果应用中有严重的过度绘制可能会导致比较糟糕的渲染性能。不透 明的View会完全遮盖其它的View的情况下会导致渲染引擎进行多次绘制。你可以通过开启设置中的开发者选项的GPU overdraw来修复相应的问题。 Android图片编码机制深度解析(Bitmap,Skia,libJpeg) 工作中遇到了Android中有关图片压缩保存的问题,发现这个问题还挺深,而且网上资料比较有限,因此自己深入研究了一下,算是把这个问题自顶至 下全部搞懂了,在此记录。相关的几个问题如下:1.Android系统是如何编码压缩保存图片的?2.Skia库起到的作用?3.libJpeg库起到的 作用?4.能不能自己调用Skia或libJpeg? 1.5后引入的Executor框架的最大优点是把任务的提交和执行解耦。要执行任务的人只需把Task描述清楚,然后提交即可。这个Task是怎 么被执行的,被谁执行的,什么时候执行的,提交的人就不用关心了。具体点讲,提交一个Callable对象给ExecutorService(如最常用的 线程池ThreadPoolExecutor),将得到一个Future对象,调用Future对象的get方法等待执行结果就好了。 上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简 单。并通过剖析ExecutorService的一种经典实现ThreadPoolExecutor来分析接收任务的主要逻辑,发现 ThreadPoolExecutor的工作思路和我们带项目的老大的工作思路完全一致。 Android Studio的基本用法就比较琐碎了,篇幅也比较大,已经有很多文章进行过介绍,这里就不展开讲解了,想了解的可以参考@StormZhang的系列教 程,教程中基于Android Studio 1.0 版本进行介绍,跟最新的有些许差别,但并不影响我们学习。 [AndroidUITestRunner]面向UI的单元测试框架 通常我们使用的单元测试框架都是用来测试一些非UI的逻辑的,如JUnit,CPPUnit。我希望团队中的成员都要养成写单元测试的习惯,一方面 单元测试本身就是一份非常好的文档,另一方面单元测试有助于强迫使你的代码耦合更加松散(模块可以独立测试), 在移动应用开发中我遇到一些这样的问题。 Android应用Activity、Dialog、PopWindow、Toast窗口添加机制及源码分析 在那篇文章里我们当时重点是Activity的View加载解析xml机制分析,当时说到了Window的东西,但只是皮毛的分析了 Activity相关的一些逻辑。(PS:看到这不清楚上面啥意思的建议先移步到《Android应用setContentView与 LayoutInflater加载解析机制源码分析》,完事再回头继续看这篇文章。)当时给大家承诺过我们要从应用控件一点一点往下慢慢深入分析,所以现 在开始深入,但是本篇的深入也只是仅限Window相关的东东,之后文章还会继续慢慢深入。 一个非常简单的用于测试 UI 的单元测试框架. Google Drive的视差滚动引导页效果实现. 一个效果很赞的自定义日历View. 一个速度指示盘效果的自定义View. 一个Material Design风格的日期、时间选择器. 一个继承自 SpannableStringBuilder 的工具类,添加了一些可以方便你给文本添加多种Span的方法. 在4.0系统以上提供统一风格 Material Design 风格的 ProgressBar. 非死book 开源的静态代码分析工具,用于在发布移动应用之前对代码进行分析,找出潜在的问题。目前 非死book 使用该工具来分析 非死book 的 App,包括 Android 、iOS、非死book Messenger 和 Instagram 等等。 Plugin to navigate between events posted by EventBus. 在 Android studio 内连接并操作 Android 设备上 sqlite 数据库。Android 工程师杀人越货居家旅行必备插件! Print it, cut it, give it to your designer! 教程
代码&开源库
工具