3

ハンドラー、サービス、およびアクティビティの基本概念に混乱があります。多くの場所で、サービスが UI スレッドで実行されることに言及しているのを見てきました。この声明についていくつか質問があります。

  • 上記のステートメントは真ですか、それとも偽ですか??
  • 誰かがサービスのAndroidリファレンスからこのステートメントを説明できますか

    サービスはスレッドではありません。それ自体は、メイン スレッドから離れて作業を行う手段ではありません (アプリケーションが応答しないエラーを回避するため)。

  • サービスが UI スレッドで実行される場合、負荷の高い作業には適していません。真/偽 ??
  • 実行中のアクティビティがない場合、どのスレッド サービスが実行されますか?? 上記のステートメントが true の場合。
  • 上記のステートメントが正しい場合は?次に、ハンドラーをサービスとアクティビティで宣言するとどうなりますか?? 単一のスレッドには Handler のインスタンスが 1 つあるためです。
質問が初心者すぎる場合はご容赦ください。

4

2 に答える 2

1

公式ドキュメントから:

サービスは、そのホスティング プロセスのメイン スレッドで実行されます。サービスは独自のスレッドを作成せず、別のプロセスで実行されません (特に指定しない限り)。これは、サービスが CPU を集中的に使用する作業やブロック操作 (MP3 の再生やネットワークなど) を行う場合、その作業を行うためにサービス内に新しいスレッドを作成する必要があることを意味します。別のスレッドを使用することで、アプリケーションが応答しない (ANR) エラーのリスクが軽減され、アプリケーションのメイン スレッドはアクティビティとのユーザー インタラクション専用のままにすることができます。

于 2015-06-30T13:30:15.260 に答える