1

これは非常に基本的な質問ですが、サービスがメインスレッドで実行されていることを読んだので、理解できません。では、なぜ Service を作成する必要があるのでしょうか? また、CPU タスクが集中する場合は、Service で Async タスクまたはスレッドを作成する必要があるため、アクティビティまたはアプリケーション クラスでそれらを作成しないのはなぜですか?

開始時に一連のタスクを継続的に実行するサービスを作成したかったのです。ループで実行される Service のメソッドが見つかりません。そのような方法はありますか?または、ループを設定するためにサービス中のスレッドを作成する必要がありますか?

4

1 に答える 1

2

なぜアクティビティ クラスまたはアプリケーション クラスで作成しないのでしょうか。

できますが、達成したいタスクによって異なります。の主な特徴は、Serviceバックグラウンドで実行され、アクティビティのライフサイクルから切り離されていることです。

次の状況を想像してください。メディア プレーヤー アプリケーションで作業していて、ユーザーがアプリケーションを終了したときでも、バックグラウンドで音楽を再生できるようにしたいと考えています。

ここで、メディア プレーヤーのロジックをアクティビティに配置すると、ユーザーがアプリを離れると、メディア プレーヤーが終了するため、音楽が停止します。これは良くありません。ユーザーがアプリを離れてもバックグラウンドで音楽を再生し続けたいと考えています。これを実現するには、再生ロジックを に配置する必要がありますService

また、独自のワーカー スレッドを提供するIntentServiceクラスを調べてください。独自のワーカー スレッドを定義しないでください。

ループで実行される Service のメソッドが見つかりません。そのような方法はありますか?

いいえ、ありません。サービスを再度開始するか、サービス内にループを作成します。

于 2013-08-28T07:31:18.160 に答える