我可以从Application#onCreate()启动Service吗?

问题描述 投票:0回答:3

我想在我的应用程序从任何组件初始化时启动服务。

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        startService(new Intent(getApplicationContext(), MyService.class)); 
    }
}

服务在

onCreate()
状态下可用吗?
super.onCreate()
会初始化在AndroidManifest.xml中注册的应用程序的所有组件吗?

我可以在我的 Galaxy 中运行此代码,但我无法确保它能在所有设备和平台上运行,我找不到任何有关 Android APP 初始化的文档。

service oncreate android
3个回答
10
投票

是的,您可以按照您现在的方式启动服务。但不能保证该服务会成功启动 - 只要该服务存在于设备上并且能够运行,它就会成功启动。

onCreate()
不做从应用程序内启动服务所需的任何准备工作。 “服务在 onCreate() 状态下是否可用”是什么意思?
    


1
投票
Context.startService()

,但文档还说,如果它返回 null,则服务不可用。

如果服务正在启动或已经运行, 返回实际启动的服务的ComponentName;别的 如果服务不存在则返回null

此 API 不会因设备而异,因此您可以对模拟器和设备上的体验充满信心。 需要注意的是,请记住,需要“大量”资源的服务可能会有不同的行为,即 CPU 时间或内存等。


0
投票
super.onCreate()

    

© www.soinside.com 2019 - 2024. All rights reserved.