私のアプリケーションでは、SAX パーサーを使用して XML データを解析しています。しかし、解析操作全体をバックグラウンドで実行したい、つまりワーカー スレッドを使用して実行したい。ハンドラー、AsyncTask、またはサービスを使用して、この 3 つの間で多くの混乱があるため、これが最適なソリューションになります。
3 に答える
AHandler
は何もしません。これは、バックグラウンド スレッドと UI スレッドの間で処理を渡すための手段です。AnAsyncTask
はここに行く方法です: が組み込まれているHandler
ため、完了したら UI スレッドに戻って何かを実行したり、作業の進行に合わせて更新を公開したりすることもできます。単純な worker を使用するのと同じですThread
が、ビルトインの便利Handler
さがあります。もちろん、 a の動作がニーズに合わない場合は、 workerThread
とHandler
自分自身を使用できます。Handler
これService
はやり過ぎのように聞こえます。これは、処理を他のアクティビティで利用できるようにする方法です。また、問題を回避できませんService
。UI スレッドで呼び出され、UI のブロックを回避するために別のスレッドを起動する必要があります。
単純な Java スレッドを生成し、そこで作業を行うことができます。
すべてに利点があります。したがって、すべてのいずれかを答えてください。それはあなたのニーズに依存します..
簡単な実装が必要な場合などに使用できるAsyncTask with predefined structure and callbacks
ため、同様のサービスには特定のケースで独自の利点がある場合があります..
AsyncTask にはさまざまな作業用の構造とコールバックが事前定義されているため、ハンドラーは AsyncTask よりも柔軟性が高くなります。したがってhandler with any thread with
、事前定義された構造とコールバックの制限はありません。