問い合わせサービス()---非同期メッセージ処理フロー

Androidのサービスは、バックグラウンドで実行中のプログラムを実装するためのソリューションです。

サービスを学習する前に、我々はすべてのコードが、私たちはどの特定のサービスのサービスを行うために、サブスレッドを開く必要があり、メインスレッドでデフォルトで実行され、サービスが自動的に開いているスレッドしないことを理解する必要があります。

Androidのマルチスレッドプログラミング

Javaのマルチスレッド、匿名クラスの一般的に使用される方法に似ています。
new Thread(new Runnable(){
@Override
public void run(){
//执行具体的逻辑
}
}).start();

UI要素は、メインスレッドで更新する必要があります

AndroidのUIスレッドは、サブ操作で許可されていませんが、時には我々は、サブスレッドでの結果に基づいて、その後、UI操作をいくつかの時間のかかる操作を実行する必要があります。この目的のために、##のAndroidは、非同期メッセージ処理機構のセットを提供します。

非同期メッセージ処理機構

Androidの非同期メッセージ処理機構は、主にメッセージハンドラ、ManageQueue、ルーパー四つの部分。

異なるスレッド間でデータを転送するためのメッセージ。
ハンドラは主にデータを送信するためのsendMessage()メソッドを使用して、送信プロセスメッセージに使用され、データは、最終的のhandleMessage()メソッドが処理されます。
メッセージキューメッセージキュー、ハンドラによって送信されたすべてのメッセージの主記憶装置。
各スレッドのメッセージキューの家政婦ルーパー

非同期メッセージの処理フロー

図1は、第一のhandleMessage()メソッドを上書きし、ハンドラオブジェクトを作成します。
我々はのsendMessage()メソッドによって送信されたメッセージ・オブジェクトを作成し、サブUIスレッドで動作する必要が2、。
図3に示すように、メッセージて送信は、ルーパーのデータを抽出し待って、メッセージキューに格納されています。
図4に示すように、データハンドラ()メソッド内のhandleMessageに分配されます。

ハンドラがメインスレッドに作成され、のhandleMessage()メソッドがメインスレッドで実行され、UIの動作が可能です。非同期メッセージ処理フロースルーメッセージはメインスレッドにサブスレッドから進みます。

发布了37 篇原创文章 · 获赞 10 · 访问量 1万+

おすすめ

転載: blog.csdn.net/OneLinee/article/details/78568984