私のAndroidアプリケーションマニフェストで次の項目が定義されています
1アプリケーション拡張3サービス5アクティビティ
サービスが開始される前に、ApplicationクラスのonCreateが完了することが保証されていますか?アプリケーションの状態を適切に初期化するために、3つのサービスを開始する前に実行する必要がある特定のロジックがあります。
私のAndroidアプリケーションマニフェストで次の項目が定義されています
1アプリケーション拡張3サービス5アクティビティ
サービスが開始される前に、ApplicationクラスのonCreateが完了することが保証されていますか?アプリケーションの状態を適切に初期化するために、3つのサービスを開始する前に実行する必要がある特定のロジックがあります。
それは少なくとも私がドキュメントを理解する方法です:
public void onCreate()
「他のアプリケーションオブジェクトが作成される前に、アプリケーションの起動時に呼び出されます。この関数で費やされる時間は最初のアクティビティの開始のパフォーマンスに直接影響するため、実装は可能な限り迅速にする必要があります(たとえば、状態の遅延初期化を使用)。サービス、またはプロセス内の受信者。」
http://developer.android.com/reference/android/app/Application.html#onCreate%28%29
常識はそうだと示唆しています。IIRCは明示的に文書化されていません。ただし、Service.getApplication()
nullを返すことができるとは文書化されていないので、私は言うでしょう-そうであるかのようにコードします。
アプリケーションの初期化とサービスの初期化はどちらも同じUIスレッドで行われるため、同時実行性について心配する必要はありません(「XはYが完了する前に開始します...」)。サービスはスレッドではないため、競合状態になる可能性はありません。