Android起動Serviceの違い


Android Serviceライフサイクルは、モバイルデバイスの革新を促し、ユーザーに最も優れたモバイルサービスを体験させ、broadcast receiversだけがこの方法を実行する時にアクティブになります。OneReceive()が戻ってきたら、それは非アクティブ状態です。
プログラムが停止されていない場合や、自分で停止している場合は、サービスは常に実行されます。このようなモードでは、ServiceはContect.startService()の呼び出しを開始し、Conttext.stopService()に停止し、Android ServiceはAndroid Serviceライフサイクル()またはService.stopSelfResoult()を呼び出して自分を停止することができる。何度もstartServiceを呼び出しても、一度だけstopServiceを呼び出すことで、serviceを停止することができます。
インターフェースを介して外部プログラムに呼び出すことができます。外部プログラムはserviceへの接続を確立し、接続によってserviceを操作します。接続のセットアップはContect.bindService()から始まり、Contact.unbindService()で終了します。複数のクライアントは同一のserviceにバインドできます。serviceが起動していない場合、bindService()は起動を選択できます。
サービスは自分で実行できません。Contect.startService()またはContect.bindService()を呼び出すことでサービスを開始する必要があります。この二つの方法はいずれもServiceを起動することができますが、それらの使用場所は違います。startServiceを利用してサービスを有効にします。コーディネーターとサービスの間には関係がないです。コーディネーターが退出しても、サービスはまだ実行されています。bindServiceを使ってサービスを有効にして、利用者とサービスが結びつけられました。使用者が一旦退出したら、サービスは終了します。「同時生産を求めないで、同時に死ななければならない」という特徴があります。
Contect.startService()を利用してサービスを開始するつもりであれば、サービスが作成されていない場合、システムは先にサービスのonCreate()方法を呼び出して、次にワンストップ()方法を呼び出します。startService()を起動する前にサービスが既に作成されている場合、何度もstartServiceを起動する方法は何度もサービスを作成することにつながりません。startService()方式で起動するサービスは、Contect.stopService()メソッドを呼び出してサービスを終了し、サービス終了時にワンデストロイ()メソッドを呼び出します。
Contect.bindService()を利用してサービスを開始しようとすると、サービスが作成されていない場合、システムは先にサービスのonCreate()方法を呼び出して、次にonBind()方法を呼び出します。この時、利用者とサービスを結びつけて、利用者が退出したら、システムは先にサービスのonnUnibind()の方法を呼び出して、次にonDestroy()の方法を呼び出します。bindService()を呼び出す前にすでにサービスがバインドされていた場合、何度もbindService()を呼び出しても、サービスおよびバインディング(つまり、onCreate()とonBind()方法は何度も呼び出されませんでした)。使用者がバインディング中のサービスとのバインディングを解除することを望むならば、unbindService()方法を呼び出すことができ、この方法を呼び出すと、システムがサービスを呼び出すonnnbind()->on Destroy()方法にもつながる。
まとめ:Serviceの2つの起動方法と違い
Serviceのライフサイクル方法one Create,one Start,on Destroy
Serviceのライフサイクルに対する影響は違っています。
1 startService経由
ServiceはonCreate->onStartを経験します。
stopServiceの時は直接on Destroyです。
もしコーディネーターが直接退出してstopServiceを呼び出していないなら、Serviceはずっとバックグラウンドで運行されます。今度はコーディネーターがまた来たらstopServiceができます。
2 bit Serviceを通じて
Serviceはオンクレーテを運行しています。この時サービスの利用者とサービスは一緒に結合されています。
調合者は退出しました。SreviceはonUnbind->on Destroyedを呼び出します。紐付けというのは一緒に存亡します。また、このような方法でも大丈夫です。
コール発信者(例えば)は、サービス上の他の方法を呼び出します。