二つの方法サービスのイラスト

二つの方法サービスのイラスト

我々はすべて知っているように、サービスは、開始するには、2つの方法があります
ここに画像を挿入説明



新しいプロセスにおけるA.スタートサービス

新しいプロセスでは、5つのステップに分けてサービスを開始します。

ステップ1:

アプリはAMSサービスにメッセージを送信し、このようなAIDL透視ルックスから起動します
サービス
。図のクライアントが起動するAMN AMP APPによって送ら/サービス情報をAMSに、アプリの終了を表します。

ステップ2:

AMS検査サービスは、マニフェストで宣言され、文は直接エラーではありませんでした。

サービス開始AMS検査プロセスが存在し、そうでない場合は、サービス情報を置く保存され、その後、新しいプロセスを作成しています。

AMSでは、各サービスは、保留にServiceRecordオブジェクトを使用します。

ステップ3:

新しいプロセスが開始された後、新しいActivityThreadを作成し、その後、ActivityThreadはAMSにAMPを渡すことによって、オブジェクト、AMSを告げ、新しいプロセスが正常に起動しました。

ステップ4:

AMS-入力されたActivityThreadは、新しいプロセスを開始したいサービスに情報を送信するために、ATPにより、ATPであるApplicationThreadProxy、オブジェクトに変換します。

STEP5:

ActivityThread及びH、方法のonCreateサービスの実装により、ApplicationThreadを介して受信し、新たなプロセス情報、及び同じ前述の開始アクティビティの最終工程をAMS。一方、サービスコンテキストコンテキストオブジェクトを作成し、サービスに関連しています。
ここに画像を挿入説明
ここでは、開始時にHとHの活動は、新しいプロセスで正常にサービスを開始するには、ここ... Handlerクラスです


II。現在のプロセスでサービス開始

上記のプロセスと比較すると、現在のプロセスでサービスを開始するはるかに簡単です:
AMSへ1.App要求サービス開始

そのようなサービスを宣言するかどうかなど、日常のチェックを、2.AMS、サービスはAMSでここに登録されています。AMSは、サービスは、通知にこのアプリのサービスを開始するサービスアプリを起動することが分かっています。

3 ...サービスが正常に開始されました

III。現在のプロセスでは、新たに立ち上げたサービスバインディング

AMSサービスへのStep1.APPバインディング要求

そのようなサービスを宣言するかどうかなどStep2.AMSルーチンのチェックは、サービスは、AMSでここに登録されています。AMSは、サービスアプリケーションのサービスアプリケーションへの通知のサービス、バインドを開始することが分かっています。

Step3.App AMSは、サービスを開始し、最初のメッセージを受信しました

Step4.App AMSは、第2のメッセージ、サービスバインディング、およびAMSを通過バインダーを受け

Step5.AMSはバインダーを受け取った後、APPに送ります

Step6.APPは、サービスが正常に起動し、バインダーオブジェクトを受け取りました

ステップ1:
ここに画像を挿入説明
step5,6:
ここに画像を挿入説明
写真は自分自身を塗られ、アドレスは次のとおりです。processon

参考記事:
https://www.jianshu.com/p/058d35e01dd1

公開された47元の記事 ウォン称賛15 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_41525021/article/details/104691794