Android中的启动服务会在onCreate上调用应用程序

Android中的启动服务会在onCreate上调用应用程序,第1张

概述我正在使用启动Android服务,startService(getApplicationContext(),MyService.class);我已经在AndroidManifest中正确定义了我的服务.现在,我从Applicationcreate调用上面的代码.情况1:从应用程序onCreate()调用以上代码>我看到Application.onCreate()被调用了两次.一种是所

我正在使用启动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上调用应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1088824.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存