ホームページ  >  記事  >  サービスのライフサイクルとは何ですか?

サービスのライフサイクルとは何ですか?

清浅
清浅オリジナル
2019-05-09 14:41:2532430ブラウズ

サービスのライフ サイクルは、開始されたサービスのライフ サイクル、バインドされたサービスのライフ サイクル、開始およびバインドされたサービスのライフ サイクル、およびサービスのクリア時の 4 つの部分に分かれています。サービスが停止されています。

サービスのライフサイクルとは何ですか?

サービス ライフ サイクル

アクティビティと同様に、サービスにも独自のライフ サイクル機能があります。システムは、対応するサービス ライフ サイクル関数を呼び出しますが、アクティビティ宣言サイクルと比較して、サービス宣言サイクルは単純です。

(1) 開始されたサービスのライフサイクル

Context.startService メソッドを呼び出すアクティビティによってサービスが開始された場合、アクティビティの有無に関係なく、サービスが開始されます。サービスへのバインドを解除するには、bindService を定義または unbindService を使用してバインドします。サービスはバックグラウンドで実行されます。 startService メソッドによって Service が複数回開始された場合、onCreate メソッドは 1 回だけ呼び出され、onStart は複数回 (startService の呼び出し数に相当) 呼び出され、システムは Service のインスタンスを 1 つだけ作成します。 Service は、stopService または独自の stopSelf メソッドが呼び出されるまで、対応するプログラムのアクティビティが実行されているかどうかに関係なく、常にバックグラウンドで実行されます。もちろん、システムリソースが不足した場合、Androidシステムもサービスを終了する可能性があります。

(2) バインドされたサービスのライフサイクル

Context.bindService メソッドを呼び出すアクティビティによってサービスがバインドされ、開始された場合、bindService を何度実行しても問題ありません。毎回、onCreate メソッドは 1 回だけ呼び出され、onStart メソッドは決して呼び出されません。接続が確立されると、サービスは、Context.unbindService が呼び出されて切断されない限り、または以前に bindingService を呼び出したコンテキストが存在しなくなった場合 (アクティビティの終了時など) を除き、実行を継続します。システムは、サービスと対応するサービスを自動的に停止します。 onDestroy が呼び出されます。

(3) 開始およびバインドされたサービスのライフ サイクル

Service が開始され、再度バインドされた場合、サービスは常にバックグラウンド プロセスになります。そして、どのように呼び出されても、onCreate は常に 1 回だけ呼び出され、startService が呼び出された回数に応じて、Service の onStart が何度も呼び出されます。 unbindService を呼び出してもサービスは停止されませんが、サービスを停止するには stopService またはサービスの stopSelf を呼び出す必要があります。

(4) サービス停止時のサービスクリア

サービス終了時 (1. stopService を呼び出す; 2. stopSelf を呼び出す; 3. サービスが存在しないバインディングが長くなっている場合 (特定の接続が開始されていない場合)、onDestroy メソッドが呼び出されます。ここで、サービス内で作成および実行されているスレッドを停止するなど、いくつかのクリーンアップ作業を行う必要があります。

以上がサービスのライフサイクルとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。