Tencent / mars

Mars is a cross-platform network component developed by WeChat.
Other
17.3k stars 3.63k forks source link

ALARM ANR #514

Open wosshzhb opened 5 years ago

wosshzhb commented 5 years ago

发现在Android机子上会出现alarm广播的ANR

01-04 21:45:06.036 471 526 W BroadcastQueue: Timeout of broadcast BroadcastRecord{da7c670 u0 ALARM_ACTION(1540)} - receiver=android.os.BinderProxy@9b3f640, started 60001ms ago 01-04 21:45:06.036 471 526 W BroadcastQueue: Receiver during timeout: BroadcastFilter{54e96be u0 ReceiverList{c278979 1540

OnAlarm逻辑代码没改动。

这个要怎么解?

garryyan commented 5 years ago

看看 receiver 处理函数为什么会耗时那么久

wosshzhb commented 5 years ago

看看 receiver 处理函数为什么会耗时那么久

onReceive内部函数也是没改过,我看里面的实现是遍历了下alarm_waiting_set,如果找到相应的数据,就jni到c层,构造一个消息抛到c层消息队列去处理了

garryyan commented 5 years ago

必现吗? 加点 logcat 看 onReceive 耗时多久

wosshzhb commented 5 years ago

必现吗? 加点 logcat 看 onReceive 耗时多久

倒不是必现,但是出现的几率比较大。跟这个alarm Action太频繁有关系吗?我感觉mars里面好多地方都用到了alarm

garryyan commented 5 years ago

应该关系不大,结合 xlog 看看 mars 消息队列是否有可能被堵死了