美文网首页
【系统】拨号盘界面,插双卡呼出号码后,再拔卡再插卡,重复操作几次

【系统】拨号盘界面,插双卡呼出号码后,再拔卡再插卡,重复操作几次

作者: 平头说人生 | 来源:发表于2018-05-23 19:01 被阅读2次

    【系统】拨号盘界面,插双卡呼出号码后,再拔卡再插卡,重复操作几次界面卡住,之后出现重启

    1 Line 381: "SIM Service - 0" prio=5 tid=12

    Native Line 415: "SIM Service - 0" prio=5 tid=15

    Native Line 474: "SIM Service - 0" prio=5 tid=17

    Native Line 508: "SIM Service - 0" prio=5 tid=18

    Native Line 542: "SIM Service - 1" prio=5 tid=20

    Native Line 576: "SIM Service - 0" prio=5 tid=19

    Native Line 610: "SIM Service - 0" prio=5 tid=21

    Native Line 644: "SIM Service - 1" prio=5 tid=23

    Native Line 678: "SIM Service - 0" prio=5 tid=22

    Native Line 712: "SIM Service - 0" prio=5 tid=24

    Native Line 746: "SIM Service - 0" prio=5 tid=25

    Native Line 780: "SIM Service - 1" prio=5 tid=27

    Native Line 814: "SIM Service - 0" prio=5 tid=26

    Native Line 873: "SIM Service - 1" prio=5 tid=30

    Native Line 907: "SIM Service - 0" prio=5 tid=28

    Native Line 941: "SIM Service - 1" prio=5 tid=31 Native

    的确启动了很多的线程,但是线程名字一直在0和1之间,没有超过2,说明每次启动基本都是在前个Sim Service执行完毕销毁的情况下重新启动的。

    那么说明service最多挂起了一个client访问,此种情况不应该导致binder耗尽;

    需要查看SIM Service的启动时间来证明:从Log来看查询次数还可以,不是特别的频繁,一分钟查询2--4次,关键要看下importProcessor的start的次数和处理完毕后log打印次数是不是一致的?

    1 循环创建10个processor查看threadName 是不是逐渐增长的?

    2 查看importProcessor的创建次数和结束后的打印Log是不是保持一致的?是不是有没有结束的thread然后又启动了新的importProcessor?

    解决方案:

    1 将ServiceManager中的processor cotainer设为静态,当存在未完成的import thread则不执行新的processor,最多存储两个thread,一个在执行一个在等待前面执行的import可能不一定全面,所以后面再执行一次也是合理的

    经查看发现在createProcessor的时候有判断当前同类型的processor是否在执行,如果正在执行不会发起新的请求但是从Log中又发现启动的importProcessor和结束的importProcessor数量不同,

    代表有些importProcessor没有执行完毕NamePhoneTypePair(String nameWithPhoneType)空指针问题之前创建的线程比如tid=72的和tid=73的几乎同时触发,

    但是72,73都调用IccProvider查询后只有73执行了查询操作,72停留住了,后面也没有处理, 看样子是一直卡住了,

    Executor在shutdown的时候也没有将其关闭,导致一直hold binder

    相关文章

      网友评论

          本文标题:【系统】拨号盘界面,插双卡呼出号码后,再拔卡再插卡,重复操作几次

          本文链接:https://www.haomeiwen.com/subject/ckldjftx.html