工作学习记录
文章平均质量分 76
只影1
多年Android开发者经验,追求技术
展开
-
Synchronized锁的升级
偏向锁标志位置1对象头中的标志位默认为“01”,即偏向模式使用 CAS 操作 让锁对象的对象头的 偏向线程 id 指向当前线程 id偏向锁的释放只有有竞争时才会释放锁。释放锁只能发生在全局安全点(这个时间点是上没有正在执行的代码)暂停拥有偏向锁的线程,判断锁对象是否处于被锁定状态撤销偏向锁,恢复到无锁或轻量级锁的状态当 锁对象的对象头的 偏向线程 id 指向当前线程 id时,直接执行同步块的代码当另一个线程获取锁时发现偏向线程 id和自己不一样,需要再测试一下Mark Word中偏向锁的标识是否设置成1(是原创 2022-06-26 00:45:56 · 227 阅读 · 1 评论 -
Android调试Plugin
首先在plugin项目中,点击Edit Configurations点击+号,选择remote然后修改一下名字将command line的命令复制一下复制任务接下来切到使用这个plugin的项目中然后改下名字,将上面复制的命令粘贴到VM options文本框中,然后修改suspend的值为y然后AndroidStudio会将当前任务切换为刚创建的这个任务,我们几点run按钮接下来任务会进入等待状态然后我们切到plugin项目,debug第一步骤创建的remote任务然后等一会就可以发现断点停在了我们需原创 2022-06-26 00:38:26 · 1087 阅读 · 0 评论 -
ASM字节码插桩解决国内隐私问题
2021年政府加强了对用户隐私的保护,App 的上架更新必须通过隐私合规扫描,而对 App 开发者来说就是必须在用户同意隐私政策前不能调用政府规定的隐私相关的 api。对于大家自己项目内部的代码来说,可以自己手动改掉,但是对于一些用到的第三方库就束手无策了,也许这些库有隐私版本的更新,但是对大家来说,可能版本差距太大,项目改动会比较多,当公司老项目比较多时,这种修改方案就耗费时间太久了。而使用Gradle插件+ASM的方式可以很好的解决我们的困难。ASM是AOP编程中一种比较成熟的框架,而 AOP是面向切面原创 2022-06-26 00:31:41 · 755 阅读 · 0 评论 -
Crash和Anr以及启动优化记录
通过Vcm捕捉到的崩溃信息和Firebase Crashlytics的崩溃信息和埋点日志,初步猜测定位问题可能是广告刚好崩溃率上升大概跟广告位的上增长比较相近。于是就需要上线去广告灰度版本进行测试。Glide首页瀑布流图片很多是Webp,然后Vcm捕获到一部分Glide的解析崩溃大量的Anr发生在FCM 的 FirebaseInstanceIdReceiver ,因为App里面使用的是透传通知,Fcm收到后台消息后需要后台启动App响应透传通知信息,怀疑启动过慢导致了FirebaseInstanceIdRe原创 2022-06-26 00:25:28 · 507 阅读 · 0 评论