Android 异常:JPush推送与远程进程问题

来源:互联网 发布:nginx websocket 转发 编辑:程序博客网 时间:2024/06/04 00:52

问题描述:

项目使用UDP协议进行通讯,接收广播信息,但总是会出现没有无法接收到广播的问题,通过log出来的信息看到,实际上app是有接收到广播信息的,但是确是在app的另一个私有进程中(为极光推送设置的私有进程)。

问题点:

从log日志中可以初步判断,问题出在为极光设置的进程上面,于是查找了相关android:progress 的文章,该属性会将组件运行到一个单独的进程中,如果是以”:”开头,就是该应用下的私有进程。因为进程是属于该应用下的,所以就会在新进程中也创建一个application实例,执行一次onCreate方法,而在这里做的初始化操作也会被执行。】
所以,我在app启动时开启UDP接收线程,就会出现问题,如果主进程退出,推送的私有进程被唤醒,就会在私有进程中开启udp接收线程,占用端口。当app再次启动时,主进程中就无法收到广播信息了。所以只要保证不在私有进程中启动UDP接收线程即可。

问题延伸

为了验证想法,我先注释掉了极光的相关初始化及操作部分代码,但是还是出现了同样的问题,推送的进程中接收到了广播,但在AndroidManifest文件中我的确注释掉了android:progress 属性。所以觉得应该是有遗漏的地方,然后点开AndroidMainfest的浏览界面,进行查找,发现的确存在android:process属性的设置,但是不是在项目内部,而是在电脑User/.android/build-cache文件夹下,缓存的信息,于是查找了关于build-cache相关文章。然后清除了缓存文件,重新编译运行,问题解决。

参考:http://www.tuicool.com/articles/YZRbEvV
参考方案:http://blog.csdn.net/forlong401/article/details/50963159