这几天遇到一个比较纠结的bug,原因是集成了一个第三方推送的sdk,结果导致了所有的网络请求瘫痪了,也就是页面一直处于loading状态。经过几天的排查,终于发现原来是第三方的service是独立进程,会导致全局Application的OnCreate被多次调用,当第三方的服务启动或重启时,调用OnCreate,而我们自己的应用的服务是在这里启动和绑定的。所以我们的service绑定在了第三方推送的进程里了,与我们应用本身的进程断开了连接。
废话不多说了,解决方案如下,上代码:
public void onCreate() {
String processName = TestUtils.getProcessName(this, android.os.Process.myPid());
if(processName != null){
boolean defaultProcess = processName.equals("com.android.test");
if(defaultProcess){
//当前应用的初始化
initApp();
}
}
super.onCreate();
}
public static String getProcessName(Context cxt, int pid) {
ActivityManager am = (ActivityManager) cxt.getSystemService(Context.ACT