Matrix - ANR 原理解析 上两篇文章 崩溃日志收集库 xCrash 浅析 和 xCrash ANR 兼容性测试 介绍了 xCrash 是如何处理 ANR 事件的: 注册 SIGQUIT 信号处理器捕获 ANR 查询是否处于 NOT_RESPONDING 状态以判别是否自己发生了 ANR 寻找符号 Runtime::DumpForSigQuit 并调用以打印 ANR 日志 过程中提出了几个问题: NOT_RESPOND 2021-12-03 #ANR #崩溃 #xCrash #matrix
xCrash ANR 兼容性测试 Target Steps 目的 测试 xCrash 捕获 ANR 的能力在各个 Android 版本上的兼容性 平台 WeTest - 兼容性测试 - 选取 Android 5.1 至 Android 12 共 8 个机型 Apk Viomi Fridge Launcher V2.1.2 xCrash Version 3.0.0 ANR 捕获机制 注册 SIGQUIT 2021-11-29 #ANR #崩溃 #xCrash
深入分析 Kotlin Coroutines 是如何实现的(二) async / awaitasync 和 await 是一对较为现代的 API 用以实现 **结构化并发编程 (Structured Concurrency)**,如下面代码所示,虽然 runBlocking 底层是单个线程,但是 delay 操作是非阻塞的,这两个操作的结合模拟了多线程环境下的阻塞 IO job1、job2 和 job3 三个任务并发执行,不需要编写任何线程同步代码如 Condi 2021-07-20 #kotlin #coroutine #协程
深入分析 Kotlin Coroutines 是如何实现的 launch - 启动协程从 kotlin coroutines 的 Hello World! 看起 // https://github.com/Kotlin/kotlinx.coroutines/blob/master/kotlinx-coroutines-core/jvm/test/guide/example-basic-01.kt fun main() = runBlocking { 2021-07-15 #kotlin #coroutine #协程
深入 ANR:产生的根源、处理流程和日志文件 overview在 阅读源码系列:ANR 是怎么产生的 聊过不及时消费 input event 会产生 ANR: InputReaderThread 不断地从 /dev/input 读取 input event 并放入 InputDispatcher.mInboundQueue 等待分发 InputDispatcher 寻找 input event 对应的 window 并分发到它的待发送队列里 2021-07-10 #anr
MP4 文件结构浅析 概述mp4 文件由一个个连续的 box 组成 mp4 = box + box + box + ... box 的类型繁多,没必要去死记它们的类型,记住两个关键 box 即可: moov - 保存了 SPS、PPS、track-chunk-sample 映射等关键信息 mdat - 保存了 H264 NALU 本文的目的是通过解析各种 box 从而了解 mp4 文件结构的核心概念 chunk一 2021-07-05 #mp4 #pts #dts #box
插件化之 Shadow - 初识 Overview假设我手上现在有猫眼、外卖、打车、买菜等好几个垂直领域的 APP,现在呢要开发一个集所有功能于一身的超级 APP 叫做美团,用 Shadow 该如何改造已有的垂直 APP 并集成到 meituan-app 这个新的 APP 内呢? 将猫眼 app project 拆分为 library project 和 app project library project 实际上就是原来的 2021-07-02
日志库 Logan 简介Logan 是 美团点评技术团队 开源的包含前端 SDK 和后端 Server 的一整套日志系统,也是公司日志库 VLog 的基础 Logan Android SDK 提供了这么几个 API: API Description Logan#w(log, type) 写日志(严谨地说应该是发送日志请求,因为日志是放在消息队列里等待被处理的) Logan#init 初始化 Log 2021-06-28 #log #logcat
崩溃日志收集库 xCrash 浅析 xCrash 是爱奇艺团队开源的一款崩溃日志收集库,可以收集 java crash、native crash 和 ANR 日志 日志格式为专用格式,内容还算丰富:机器信息、崩溃线程和其他线程的方法栈、logcat、打开的 fd 等等 … 默认配置为: java crash、native crash 和 ANR 都会被捕获 日志目录在 /data/data/[pkg]/files/tombston 2021-06-22 #uncaught exception #exception #崩溃 #崩溃日志 #crash #xcrash
killProcess 和 exit 的区别 Process.killProcess(pid)最终执行系统调用 kill class Process { public static final int SIGNAL_KILL = 9; public static final void killProcess(int pid) { sendSignal(pid, SIGNAL_KILL); 2021-06-20 #kill #exit