Android16 第三方应用里面启动service不断循环读写被系统冻结
项目自定义了一个FingerprintService不断识别指纹信息,识别后进行加锁和解锁操作,发现当service跑了一段时间后,大概30分钟,总是突然卡住。
1.怀疑是阻塞到read流程了
最开始怀疑阻塞到read方法里面,后面添加了一个看门狗线程,发现看门狗线程都没有信息打印了,所以应该不是read函数阻塞。
2.被系统冻结了
查看日志信息发现有一个关键日志:ActivityManager: freezing 1673 com.rp.fingerprintmanagement 原来是被系统给冻结了,所以需要修改,我这里是在冻结的时候,直接对包名进行过滤,修改方式如下:
diff --git a/base/services/core/java/com/android/server/am/CachedAppOptimizer.java b/base/services/core/java/com/android/server/am/CachedAppOptimizer.java index 4bfee1d83..49770120c 100644 --- a/base/services/core/java/com/android/server/am/CachedAppOptimizer.java +++ b/base/services/core/java/com/android/server/