手机qq2010!8900断网的真正原因[转]
8900断网的真正原因 2010年7月10日入手8900 回家刷成香港移动的5.0 版本 一开始用着挺好。 可过了一会儿QQ,乐图,pushmail等等都不能用了。 于是,查后台LOG。 发现了一些问题: 1 断网的时候,可以看到QQ2010在后台日志中记录了异常信息:调用网络函数时会出现空指针异常。BB的一个http协议类里的一个线程会返回一个空指针给所有的第三方应用程序。 2 BB自带的软件一律都能上网,只有第三方应用才会断网。 3 这时候如果测试网络的话发现ICMP没有回显。也就是说ping不到外围网络。 根据上面现象做如下分析: 1 BB 的诊断测试是通过 apn里的设置的 cmnet或cmwap 但是只有cmnet可以获得ICMP回显。 2 第三方应用程序一般都是通过TCP协议访问外网。 3 BB 自带的浏览器是通过SB里设置的WAP配置访问的。SB里配置的实际IP和端口不需要通过DNS。 根据以上的问题。又将机器刷成4.6版进行测试。 根据分析结论是第三方应用程序造成的: 当手机没有信号或信号不好时,总之是不能进行网络数据访问时。第三方应用程序不断调用BB的HTTP协议类。 例如 1QQ2010在没有信号时会每分钟调用20次,也就是说每3秒调用一次。 2 BB的HTTP协议类会不断地返回空指针异常。 3 但是QQ2010并没有把调用的线程关闭掉。 4 那就是说当你没有信号时,QQ2010每分钟会增加执行20个线程,那么5分钟就是100个线程。 5 你在电脑上试试开100个IE浏览器,你的机器肯定完蛋了。 6 所以5.0系统会做限制的,就是每个程序也许只能开有数线程。超过了就不能再开线程了。 7 所以这时候你的QQ2010已经不能再开线程访问网络了。返回的全是空指针错误,也就是线程没有被创建。 8QQ2010当然不能再上线了。 9 所以BB内置的程序都没有这样的问题。怎么都不会断网的。 10 所以你重起BB时又可以访问了,就像重起电脑一样。 11 为什么4.6版没有问题呢。其实在4.6版时第三方应用程序也是在不断的调用,但是线程都会被关闭。 12 因为4.6和4.5的开发平台是一样的。4.5平台已经很成熟了,开发者经验 也比较丰富,所以不会出现太多问题。 13 但是开发者比较懒,还是沿用4.5的方法开发。5.0版的平台完全不一样,API都变化了很多。 14 BB在开发者说明中关于访问模式在开发手册上已经建议使用5.0版的新方法。 建议第三方应用程序开发者好好学学BB新的平台中应用程序进程和线程的控制方法的改变。 结论: 1 8900断网绝对不是硬件问题。 2 绝对不是ROM问题,断网只有第三方应用才断,BB的内置软件不会断网的。 3 第三方应用程序的开发者还没学会使用新平台。 解决办法: 建议大家暂时使用4.6版的rom。等第三方应用程序的开发人员真正按照5.0版的开发时再使用。 |
|