4

onHandleIntent()のメソッド内から非同期タスクを開始する必要がありIntentServiceますか? onHandleIntent()私はそれが実行されることを読んだworker threadので、そこから始めても安全でしょうasyncTaskか??

4

3 に答える 3

3

IntentServices はすでにバックグラウンド プロセスです。そこから AsyncTask を開始する必要はありません。また、AsyncTaskどこからでも開始できます。マルチスレッドに役立つヘルパー クラスです。Activity で使用する場合は、AsyncTaskViewの -method で s を操作しないようにしてください。doInBackground()

IntentService 内で複数のスレッドを生成する必要がある場合は、次を使用します。

new Thread(Runnable r).start();

Android で Runnable スレッドを実行する方法の例を参照してください。

何らかのコールバックを呼び出す必要がある場合は、Handlerを使用してください。例については、http://www.vogella.com/articles/AndroidPerformance/article.html#handlerを参照してください。

于 2012-11-21T10:21:36.060 に答える
0

本当に IntentService 内で AsyncTask を使用する必要がある場合は、AsyncTask で doInBackGround と onPostExecute を呼び出すメソッドを作成できます。このようなもの:

void executeFlowOnBackground(Params params) {
  onPostExecute(doInBackground(params));
}

私の場合、これを行ったのは、すべての App 要求が AsyncTask を拡張したクラスによって行われ、実装がコードのリファクタリングが困難だったためです。

于 2016-04-18T17:24:59.507 に答える
0

AsyncTask クラスは、マルチスレッド化を実現するメカニズムを提供するために使用されるため、イベント スレッドがハングすることはありませんが、サービスを使用しているため、サービスで AsyncTask を使用しないでください。代わりに、長時間実行されるタスクの場合はスレッドを使用できます。本サービスにおいて実行すること。

于 2012-11-21T10:21:56.277 に答える