手机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版的开发时再使用。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。