2016-07-14 4 views
0

IntentServiceには独自のスレッドがあり、handleIntentから別のスレッドを開始すると、サービスは実行中または完了したサービスとみなされ、別のスレッドがアクティブかnorかどうかは関係ありませんか? IntentServiceがそのジョブを完了するとすぐに、メインスレッドに戻り、別のスレッドを呼び出すことは可能ですが、別のスレッドの開始は、アクティブではなくメインスレッドからのものである可能性があります。アクティビティ。IntentServiceがそのジョブを完了すると、 UIスレッドから別のスレッドを開始できますが、アクティビティからは開始できませんか?

答えて

0

IntentServiceは今までそれをしないでください handleIntent

から別のスレッドを開始、独自のスレッドを持っています。 IntentServiceonHandleIntent()メソッドが返されると、サービスは破棄され、プロセスも強制終了される可能性があります。 Androidはあなたのプロセスがアイドルであり、リソースを無駄にしていることを知っているすべてのスレッドについて、あなたがどのスレッドを開始したのか分かりません。

あなたはIntentServiceが行われたときに、何かを「開始」(適切な方)startActivity()startService()またはsendBroadcast()を使用する必要がある場合。再び、Androidはあなたのスレッドについて知りません。

プロシージャコールのセマンティクスが必要な場合(たとえば、サービスを開始してタスクを実行してから呼び出し元に制御を戻す場合)、IntentServiceは適切なツールではありません。バインドされたサービス(またはプロセスの境界を越える必要がある場合は、バインドされたAIDLサービス)を使用します。

+0

ありがとう、私は最初の部分、 IntentServiceは、適切なデータを受信するとすぐに、私は別のスレッドを開始する必要がありますポイントは、メインスレッドから開始する必要があります2番目のスレッドですが、私は別のスレッドを開始することができますIntentServiceの完了を処理することができます、私はsmth、グローバルな場所が欲しい、IntentServiceの完了の受信機は、活動であることを望んでいない。 –

+0

それをしないでください。 'IntentService'からスレッドを作成するべきではありません。私は本当にここで助けることはできません。なぜなら、「なぜなら、私はメインスレッドから始める必要がある第2のスレッド」のようなステートメントを理由なしで作成しているからです。 –

+0

さて、ダウンロード機構を実装するライブラリを使用していますが、2番目を開始する前にリソースを取得する必要があります。結果を受け取るとすぐに2_nスレッド(ダウンロードメカニズムを処理します)を受け取り、最初のスレッドを続行する私は活動を辞めてもそれは仕事です。だから私はIntentServiceを使いたいと思ったのです アドバイスが役に立ちました、ありがとう –

関連する問題