登录

去注册

登录

注册

去登录

注册

Android 开发高手课 文章更新学习笔记

鸿洋   2018-11-26   收藏

很荣幸,大家有个机会和绍文过招了~

课程中涉及到的demo,一定要记得学习呀!

https://github.com/AndroidAdvanceWithGeektime

张绍文,是前微信高级工程师,曾负责微信APM质量平台和DevOps的建设。也是微信官方的Android热补丁解决方案Tinker 负责人,这个项目保障了微信的数亿用户的使用,可见技术有多牛。绝对是Android开发领域里一等一的高手。

他在极客时间的《Android开发高手课》专栏已经上线,他在专栏中将自己在移动开发领域多年的经验心得,毫无保留的分享给你。

目前优惠活动已经结束,本文主要用来分享一些笔记,帮助已购买同学学习。

学习过程

更新后,发现难度比较大,很多同学反馈不适应,这里会更新一些笔记,尽量辅助大家学习。

笔记可能为内容梳理,也可以为课后题分析。

笔记作者:鸿洋和他的一些小伙伴。

第一讲

https://github.com/AndroidAdvanceWithGeektime/Chapter01


第二讲

https://github.com/AndroidAdvanceWithGeektime/Chapter02

笔记

针对课后问题Daemons finalize timed out after 10 seconds

产生原因,ReferenceQueueDaemon中对象的finalize执行时间超过10s。

一定要查看java.lang.Daemons.java类。

sdk的platform下的source里面一般有这个类,也可以远程查看

GC 流程

1. Finalizer obj gc (override finalize)
2. put ref to ReferenceQueueDaemon
3. FinalizerDaemon get ref from ReferenceQueueDaemon.poll
4. FinalizerWatchdogDaemon waitForFinalization then check 如果没有执行完成则抛出 .finalize() timed out after 10s.
  1. ReferenceQueueDaemon
  2. FinalizerDaemon 从ref queue中取对象,执行finalize();
  3. FinalizerWatchdogDaemon check对象10s内完成finalize()方法。

trick 方案1

https://github.com/AndroidAdvanceWithGeektime/Chapter02

通过反射,停掉FinalizerWatchdogDaemon!

android P无法执行。

trick 方案2

https://github.com/iamzhangweixiong/Z_Utils/blob/8546dcc7ecd69103aaad98e3dc33ca710ab77b24/app/src/main/java/com/zhangwx/z_utils/Z_Pub/FinalizerHelper.java

对使用finalize()方法的对象手动移除,反射FinalizerReference手动移除对象。

以上方案其实都不是解决问题的方案,都是规避问题,不建议使用,了解即可。

推荐读物:

  1. 提升Android下内存的使用意识和排查能力
  2. 再谈Finalizer对象--大型App中内存与性能的隐性杀手
  3. 从Daemons到finalize timed out after 10 seconds

第三讲 内存优化[上]

VSS RSS PSS USS

提到了USS,PSS,RSS,VSS 可参考:
* Android内存分析命令

一般情况VSS>=RSS>=PSS>=USS ,所以记忆起来,你可以根据与首字母谐音“vip you”!

adb shell dumpsys meminfo --package 应用包名 

内存使用不当会造成:

  1. OutOfMemoryError
  2. ANR gc频率

内存优化

  1. 需要根据当前可用内存去做优化,保证在内存有压力可回收即可,eg:软引用。
  2. 将到bitmap的像素存储

    不过这里提到bitmap的像素存储,Android是个否定到否定的过程,2.3.3(native) ,2.3-7.1(堆),8.0-(native)
    这里有更详细的解释:Android Bitmap变迁与原理解析(4.x-8.x)

不得不说给出的Object Alloc Tracker Samples是非常有价值的,不过难度较大,感兴趣的可以学习下。


订阅方式

优惠活动已经没有啦,现在只有新用户可享受99-30=69了,然后还会返现8元,所以需要61。

3个月的学习周期,大家可以等下次活动开始再考虑购买。

点击注册领取30的优惠券
领取完成购买,课程就是69啦~

微信扫一扫了解详情~

购买后发现的一些东西:

  1. 记得下载一个app,体验会好一些,当然小程序也可以,不要买了入口在哪都不清楚。
  2. 购买完成后,你可以分享给别人,别人通过你的分享购买会有奖励金。
  3. 按照每周大概是更新3期的,所以买了一定要记得坚持学。