技术分享

为什么会TransactionTooLargeException Activity/Fragment之间通过Bundle传递的参数过大导致,可能出现在启动界面或者界面开始保存数据onActivitySaveInstanceState/onFragmentSaveInstanceState中 如何判断Bundle的大小以及参数的大...

发布 0 条评论

查看单个 App 进程的内存信息 adb shell dumpsys meminfo <pid> // 输出指定pid的某一进程 adb shell dumpsys meminfo --package <packagename> // 输出指定包名的进程,可能包含多个进程 adb shell dumpsys meminfo com....

发布 0 条评论

ASM ASM是一个字节码处理框架,只要是做代码插桩,都离不开这个库,使用方式上有两种,一个是tree api,一个是core api,引入方式如下 implementation 'org.ow2.asm:asm:9.7.1' core api core api主要是使用的访问者涉及模...

发布 0 条评论

通过adb命令 获取pid ps -A | grep 应用包名 获取进程信息 adb shell cat /proc/[获取pid]/status 当然也可以使用ps命令查看 ps -T -p [pid] top自动更新线程信息 top -H -p [pid] 通过代码获取 object ThreadUtils { fun ge...

发布 0 条评论

前言 在Gradle Plugin开发基础流程中介绍了如何创建我们自己的插件工程,这次来介绍下如何使用Transform配合ASM进行插桩。使用 AGP Transform API 进行字节码插桩已经非常普遍了,例如 Booster、神策等框架中都有 Transform 的影子。T...

发布 0 条评论

1、动态显示隐藏图标 通过xml配置,如下 <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="leak_canary_add_launcher_icon">false</bool> </resources&g...

发布 0 条评论

前言 因为fresco库没有自动根据控件大小裁剪图片,所以需要手动监控是否存在大图 实现 通过lancet框架进行插桩 @Insert("reportSuccess") @TargetClass("com.facebook.drawee.controller.AbstractDraweeController&quo...

发布 0 条评论

前言 在https://27house.cn/archives/2396中已经介绍了,使用WeakReference可以与ReferenceQueue来判断是否执行了GC。按照这个理论,当GC的时候,就可以检测一下Activity是否泄露! 实现 代码如下所示,其中GcMonitor的代码在https://...

发布 0 条评论

WeakReference 在文章https://27house.cn/archives/2079中介绍了4种引用类型,其中WeakReference可以与ReferenceQueue来判断对象是否回收。那么其实我们可以使用此方法来监听系统是否进行了GC WeakReference监听GC 如下所示,通过添加...

发布 0 条评论

Matrix源码分析 卡顿监控原理 替换主线程Looper的Printer,从而监控dispatchMessage的执行时间,源码可以查看com/tencent/matrix/trace/core/LooperMonitor.java 具体可以查看公众号里面微信团队的解析 通过监控dispatchMessage的执行...

发布 0 条评论