1

アプリケーションのごく一部で、ユーザーのデバイスにファイルが存在するかどうかを確認します。ファイルのリストは非常に長くなる可能性があります。数人のユーザーで ANR が発生するのに十分な長さです。千のファイルは決して不可能ではありません。

コードは非常に単純です。

new File(fileUrl).exists()

操作をブロックする必要があるため、現在メインスレッドで実行しています。クラスを使用してそれを実行し、AsyncTask完了したら残りの作業を続行できますが、それが正当な理由であるかどうか疑問に思っていますか?

Serviceそれが何かを変えるならば、すべての作業はバックグラウンドで行われています。また、方向の変化を経験する可能性もあり、これは面倒かもしれませんAsyncTaskHandlerより良いでしょうか?

要約すると、方向の変更が発生する可能性があるバックグラウンド サービスで長時間実行される可能性のある操作に AsyncTask を使用する必要がありますか?

4

1 に答える 1

2

まず、Service向きの変更の影響を受けませんActivity。破棄/再作成されるのは、現在実行中のクラスのみです。

第 2 に、はUI と対話できるように設計されているためAsyncTask、あまり利点がありません。Service別のスレッドで作業を行うという利点がありますが、残りのメソッドは基本的に冗長になります。

IntentService独自のワーカー スレッドを管理して作業を行う を使用することをお勧めします。IntentServiceのドキュメントを参照してください

于 2012-12-02T00:09:12.070 に答える