拿到书后先,看了下目录感觉自己绝大部分的知识点覆盖到了,但是阅读完才发现里讲的很多知识自己其实是没有深入理解的,最近自己确实是心情不好有些浮躁,检讨检讨,本文记录get到的知识点。
第一章
- 搭建开发者论坛可以考虑使用NodeBB
- GEEK PPT 可以使用(impress.js、strut、reveal.js)
- 搭建项目文档可以考虑使用MkDocs、RanetoDocs
第二章
这一章唯一不熟悉的就是tag
git tag -a v1 -m “version1” b687b06
-a tag名 -m 描述git push origin version1
本地tag推送git push origin --tags
本地全部tag推送
第三章
这一章关于 Android Studio 快捷键的地方我觉得写得挺失败的,关键点在于很多地方直接使用了Android Studio 默认快捷键书中说使用什么什么快捷键(例如 Command + J )怎样怎样,但是对于我以 eclipse 快捷键为基础来使用 Android Studio 的人很多地方读起来一脸懵逼啊,如果把每个快捷键都带上在 keymap 里的名称就好了,准备自己写一篇。
还是有自己没有覆盖到的知识点的:
- 两下 shift -> search anywhere
- view -> enter presentation mode 进入演示模式
- 注意使用日志断点和异常断点
- 代码提示可以用 tab 补全,区别是是否删除后面的
- reveal in finder ,在finder中打开
第四章
第四章主要讲解gradle,因为自己对gradle还算熟悉本章就不做记录了,之后要尝试使用 Grovvy 语言写一个Android插件。
第五章
AAPT(Android Asset Packaging Tool)
./aapt l <APK Path> //列出apk内容
./aapt d [--values] <APK PATH> //查看apk信息
AAPT 源码位于/frameworks/base/tools/aapt 目录下
dumpsys
adb dumpsys
查看系统的状态信息,可查看如下值:
- Activity
- cpuinfo —- cpu信息
- meminfo —- 内存信息
- package —- package信息
- window —- 窗口信息
- statusbar —- 状态栏
- battery/batteryinfo —- 显示电池/使用信息
- alarm —- 显示alarm信息
可以使用adb dumpsys -h
进行学习
Logcat
adb logcat -s xys
tag过滤- -f 保存到文件
Hierarchy Viewer
-
只允许在模拟器或者工程机上使用,其他版本可以使用 https://github.com/romainguy/ViewServer。
-
也可以使用UI Automator Viewer 来分析布局。
-
Hierarchy Viewer 可以把 View 保存为PNG,或者图片格式。
第六章
全书我收获最多的一章,非常好!!!
-
Android系统对于UI的提升:
- 在Android 2.3版本,所有绘图由GPU完成 — 软解时代
- 在Android 2.3之后,系统增加了GPU,同时把很多绘图工作交给GPU进行渲染 — 硬解时代
- 在Android 4.1之后,Google 发布了 “Project Butter” ,通过VSYNC垂直同步机制和多级缓存机制(three frame buffer)进一步提高绘制效率 — 黄油时代
- 在Android 5.0之后,系统增加了Render Thread。通过这个线程进行异步绘制,即使某一帧发生延迟也不会影响下一帧 — 异步绘制时代。
-
RelativeLayout 的性能不一定优于LinearLayout:RelativeLayout 通常可以减少布局的深度,但是在进行测量时候可能会进行多次测量,而 LinearLayout 只有在使用 weight 属性的时候会进行2此测量。
-
使用 Trace for OpenGL DDMS 中的工具可以跟踪每一帧的绘制。
-
使用 SysTrace 来进行性能检测
- 除了在 DDMS 中还可以在命令行中吊起
$ python systrace.py --time=10 -o mytrace.html sched gfx view wm
- 在Android 4.3 之后可以使用系统提供的 Trace 类来增加自定义Tag
- 除了在 DDMS 中还可以在命令行中吊起
- 使用TraceView
- 通过TraceView可以得到单次执行最耗时的方法、知道执行次数最多的方法
- 内存类型:
- VSS (Virtual Set Size)虚拟耗用内存 (包含共享库所占内存)
- RSS (Resident Set Size)实际使用物理内存 (包含共享库所占内存)
- PSS (Proportional Set Size)实际使用物理内存(比例分配共享库所占内存)
- USS (Unique Set Size)进程独自占用物理内存(不包含共享库内存)
一般 VSS >= RSS >= PSS >= USS
共享内存是,Android基础公共库、组件、还有一些native library使用的内存,被所用进程共享。进程都是从Zygote进程fork出来的,新进程产生的时候就带有了 Shared 内存从而提高进程创建速度。
-
GC系统:
- 2.3 之前 GC 是同步发生的,是完整的 Heap 遍历。GC会打断应用的正常运行。
- 2.3 之后 GC 是并发运行,GC 不会遍历 Heap 只是遍历一部分,但是多次 GC 后会产生内存碎片,一个连续的区域变小,可能会发生OOM。
- 5.0 对 GC 进行了改进,加快了GC的清理速度,减少打断。GC 不仅清理,还会为大的对象分配地址,进行内存对齐
-
使用ActivityManager.MemoryInfo 可以了解内存情况,使用Debug.MemorInfo可以获取进程内内存使用情况。
-
largehepe虽然可以增大使用内存,但是会减慢GC速度
- 获取更多内存方式:
- 子进程
- 使用Native Heap
- 使用 OpenGL – OpenGl是将RAM的一部分作为显存使用,很多图像 APK 会把图片转为Texture来处理
- largeheap
-
除了复写组件的 onLowMemory 来监听,也可以Context.registerComponentCallbacks(ComponentCallbacks callbacks) 就可以在任何地方监听
- onTrimMemory的警告级别
- 运行时 – APP还能继续执行,APP处于前台
- TRIM_MEMORY_RUNNING_MODERATE 第一级警告,系统即将准备执行LMK(低内存管理系统)
- TRIM_MEMORY_RUNNING_LOW 第二级警告,内存接近LMK阈值
- TRIM_MEMORY_RUNNING_CAITICAL 第三级警告,LMK能杀的background都杀了,马上要杀你了 * 缓存时 – APP 处于后台
- TRIM_MEMORY_BACKGROUND LMK准备把你列为目标
- TRIM_MEMORY_MODERATE LMK已经把你列为目标
- TRIM_MEMOEY_COMPLETE LMK马上要杀你了 * TRIM_MEMORY_UI_HISSEN – UI元素被隐藏时候触发
可以使用
adb shell dumpsys gfxinfo packagename -cmd trim level
模拟警告级别,数值可以再ComponentCallbacks2.java中查到。 -
电量分析可以使用 https://github.com/google/battery-historian
-
综合测试工具:
- 网易Emmagee https://github.com/NetEase/Emmagee/
- 腾讯 GT https://github.com/TencentOpen/GT
- Google AnotherMonitor https://github.com/AntonioRedondo/AnotherMonitor
第七章
-
Google 搜索可以使用“+”、“-”、通配符、inurl:pdf、intitle等等。
-
Proguard自动生成 https://proguard.herokuapp.com/
-
gitignore自动生成 https://www.gitignore.io/
-
gifgrabber mp4转gif软件
-
Android资源生成网站 http://romannurik.github.io/AndroidAssetStudio/
-
在线shape生成 http://shapes.softartstudio.com/
-
icon资源:
- 阿里icon仓库 http://iconfont.cn/
- easyIcon http://www.easyicon.net/
- https://icons8.com/
-
http://angrytools.com/ 设计合集
-
https://material.uplabs.com/