我希望在从任何组件初始化我的应用程序时启动服务。
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初始化的文档。
答案 0 :(得分:9)
是的,您可以按照onCreate()
的方式开始服务。无法保证服务能够成功启动 - 只要设备上存在服务并且能够运行,它就会运行。 super.onCreate()
不会在您的应用程序中进行任何启动服务所需的准备工作。你是什么意思“onCreate()状态下的服务是否可用”?
答案 1 :(得分:1)
简而言之,是Context.startService(),但文档也说如果它返回null,则服务不可用。
如果服务正在启动或已在运行,则 返回已启动的实际服务的ComponentName;其他 如果服务不存在则返回null
此API并非在设备之间有所不同,因此您可以对您在模拟器和设备上遇到的内容充满信心。需要注意的是,需要“大量”资源的服务可能会有不同的行为,即CPU时间或内存等。