TestPlanB/Signal

关于demo anr演示

TestPlanB opened this issue · 1 comments

demo的anr是一个死循环,由于系统机制不一定会立马产生anr,可以点击按钮后再点击回退键去尽快触发!

ANR可以参考https://github.com/bugsnag/bugsnag-android 的实现.

SIGSEGV信号如果是主线程抛出的,是不会回调Java层的callNativeException方法(JVM阻止了这种调用),同时在信号处理函数中不能调用 non-async-signal-safe functions,但如果是子线程抛出这个信号,又可以回调到Java层,没有深入阅读过JVM的源码,所以不知道JVM是如何处理的

stackoverflow类似的问题https://stackoverflow.com/questions/54203717/callback-into-java-android-application-code-from-jni-after-catching-signal-sigs

因为大部分的代码肯定是在主线程中运行,所以是否应该在 Native 层直接创建一个子线程,或者使用AIDL的方式,用于监听和处理异常,回调Java层的方法.