今天临近发布,QA的同事报了很多诡异的bug —— 海外版的。一样的代码,国内版没有问题。
国内版和海外版的主体代码都在一起,而且出问题的部分也没有做拆分,所以运行效果应该完全一样!
但是表现出来的现象就是,海外版不行。
我跟了一下出问题的代码,发现,有的 AsyncTask.doInBackground 就是死活不执行。所以猜想,是不是海外有些代码阻塞了系统的 AsyncTask 的默认线程。
在 Eclipse 里,我还知道是在 DDMS 里查看,但,现在刚转 Android Studio 没多久,不太熟悉。
随便点了下这个相机的图标 ,应该是线程快照吧。点过几次之后
发现,有个 AsyncTask 一直是 runanble 状态,而且是阻塞在了 socket 的 connect 函数上。是在 com.facebook.ads.internal.http.h.doInBackground() 里调用的。再上层的类就看不出来了。
我们试过几次之后发现,确实是禁用了 facebook 广告后,其他功能就正常了。当然,如果手机本身可以连接上facebook的服务器的话,app 的表现也是非常正常的。