
我正在使用启动Android服务,
startService(getApplicationContext(), MyService.class);我已经在AndroIDManifest中正确定义了我的服务.现在,我从Application create调用上面的代码.
情况1:从应用程序onCreate()调用以上代码
>我看到Application.onCreate()被调用了两次.一种是所需的App创建,另一种是在调用startService时发生.
情况2:从应用程序中的Activity调用以上代码
>与情况1相同.
这是预期的行为吗?
我的AndroID清单代码要求:
<service androID:exported="false" androID:enabled="true" androID:name=".MyService" androID:process=".MyService"> </service>解决方法:
由于您在< service>中指定了androID:process属性,元素,并且其值与应用程序包名称不同,该服务实际上是在与应用程序默认进程不同的进程中运行. (我不知道这是否是故意的,但您似乎在流程名称中也有错字.)
如果您不打算在单独的进程中运行服务(这种情况很少见,并且只有在您有充分的理由并理解其含义的情况下才应该执行),您应该在< service>中省略androID:process属性;元素-这将导致它与应用程序其余部分的运行过程相同.
AndroID鲜为人知且似乎未记录的行为是,应用程序的每个进程都有自己的Application实例.这说明了为什么启动服务会创建一个附加的Application实例.
另外,这两个进程不仅具有自己的Application实例,而且实际上具有自己的Application类,因为它们甚至不共享相同的类加载器.因此,即使它们的静态变量也可以具有不同的值.
总结以上是内存溢出为你收集整理的Android中的启动服务会在onCreate上调用应用程序全部内容,希望文章能够帮你解决Android中的启动服务会在onCreate上调用应用程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)