【Android】ブートセルフスタートサービス


以前はAndroidが起動してから起動する方法について説明していましたが、Activityの起動方法について書かれています.この記事では、Serviceを起動する方法について説明します.
前の記事のリンクを添付して、「Android」を参考に起動してから起動します.
サービスの起動はActivityよりも煩雑で、実は別のクラスを通じて起動されたクラスを呼び出すのですが、Activityの方がよく知られているかもしれません.サービスはよく知らないでしょう.
Android Serviceを知らない子供靴は、まず「Android」サービスライフサイクルと「Android」サービス学習のローカルサービスの2つの記事を参考にすることができます.
次に本題に戻り、サービスがどのように自己起動を実現しているかを見てみましょう.
自己起動Activityと同様に、ブロードキャストを静的に登録する必要があります.
次に、BroadcastReveiverに継承された起動クラスを作成します.
		context.startService(new Intent("cn.etzmico.Etzmico_AutoRunService")); //    Service
Activityを起動するよりも、サービスを呼び出す/起動するのが簡単です.intentのパラメータは「ラベル」で、詳細は以下に説明します.
マニフェストでxml静的登録.
 <receiver android:name="cn.etzmico.autorunservice.BootReceiver" >
            <intent-filter >
                <action android:name="android.intent.action.BOOT_COMPLETED" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </receiver>

同様に、権限を追加する必要があります.
 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" >
    </uses-permission>

次はサービスを見てみましょう.
サービスに継承されたクラスを作成します.検証のために、onCreate()メソッドで、一言印刷できます.
ここではサービスのライフサイクルを簡単に説明します.
サービスにはライフサイクルもありますし、onCreate()などもありますが…サービスにはonStart()やonBind()もあります.
onCreate()とonStart()の違いは次のとおりです.
onCreate()は、サービスが最初に呼び出されたときにのみ呼び出されます.
onStart()は、サービスが呼び出されるたびに呼び出され、サービスが最初に呼び出される場合も例外ではありません.
onBind()はbindService()で呼び出されます(本明細書では触れません).
したがって,必要に応じてonCreate(),onStart(),onBind()にメソッドを書き込むことができる.
また、サービスも宣言が必要です.
新しいActivityを作成するにはManifestが必要ですxmlでは、サービスも同様ですが、サービスとは異なり、各サービスに「ラベル」を追加する必要があります.このラベルは、プロジェクトで唯一であれば、呼び出す必要があるサービスがどのサービスなのかをシステムに知らせるために使用されます.
 <service android:name="cn.etzmico.autorunservice.Etzmico_AutoRunService" >
            <intent-filter >
                <action android:name="cn.etzmico.Etzmico_AutoRunService" />

                <category android:name="android.intent.category.default" />
            </intent-filter>
        </service>

intent-filterのactiong android:nameの内容が「ラベル」です.このサービスを起動したい場合は、ブロードキャストクラスのstartService()メソッドのintentのパラメータがこの「ラベル」です.そうでない場合、サービスを開始するとnew Intentに「cn.etzmico.Etzmico_AutoRunService」が見つからないことが通知されます(引用符には、startService()の場合のintentのパラメータが含まれています).
プロジェクトリソース:http://download.csdn.net/detail/etzmico/4110913