17

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

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

4

2 回答 2

10

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

于 2011-08-26T00:53:14.613 回答
1

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

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

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

于 2011-08-26T00:52:13.617 回答