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

时间:2011-08-26 00:40:26

标签: service oncreate android

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

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初始化的文档。

2 个答案:

答案 0 :(得分:9)

是的,您可以按照onCreate()的方式开始服务。无法保证服务能够成功启动 - 只要设备上存在服务并且能够运行,它就会运行。 super.onCreate()不会在您的应用程序中进行任何启动服务所需的准备工作。你是什​​么意思“onCreate()状态下的服务是否可用”?

答案 1 :(得分:1)

简而言之,是Context.startService(),但文档也说如果它返回null,则服务不可用。

  

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

此API并非在设备之间有所不同,因此您可以对您在模拟器和设备上遇到的内容充满信心。需要注意的是,需要“大量”资源的服务可能会有不同的行为,即CPU时间或内存等。