一、背景
写了一个测试服务,在Service中会用到Application中的一个变量,变量值在Service的OnCreate中赋值。
二、 问题
测试服务的时候发现问题,在Activity中使用Application中的变量,一直为空。以为是Service没执行,打Log分析后发现问题:Service会执行,Application中的变量会赋值;问题是Application会创建两次,Service和Activity用到的不是同一个Application,引发问题。
三、 原因
接下来就是分析为什么Application会创建两次。最后发现原因是清单文件Service中的android:process属性造成。
四、 android:process属性
正常情况下,一个apk启动后只会运行在一个进程中,其进程名为apk的包名,所有的组件都会在这个进程中运行。
如果某些组件需要运行在单独的进程中,就需要用到android:process属性,使用后,Application会多次重建。
本文探讨了在Android应用中,Service与Application间因android:process属性设置不当导致的进程隔离问题。当Service指定独立进程时,Application会被多次实例化,造成Service与Activity引用不同Application实例的困扰。
2万+

被折叠的 条评论
为什么被折叠?



