17

アプリケーションがどのコンポーネントからも初期化されたときにサービスを開始したい。

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

サービスはonCreate()州で利用できますか?super.onCreate()AndroidManifest.xmlに登録されているアプリケーションのすべてのコンポーネントを初期化しますか?

このコードはGalaxyで実行できますが、すべてのデバイスとプラットフォームで実行されるかどうかを確認できません。AndroidAPPの初期化に関するドキュメントが見つかりません。

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 に答える