1

接続の変更をリッスンするために.Imを使用してAsyncTask画像をダウンロードする場所を使用しています。ネットワークが失われたときに一時停止し、接続が回復した後に続行する方法を知りたい. 誰かがスニペット/コードを提供できると助かります。HttpUrlConnectionBroacastReciever

ありがとうございました。

4

1 に答える 1

3

私の知る限り、AsyncTask 一時停止することはできません

ドキュメントには、一度だけ実行できると書かれています。したがって、AsyncTask を一時停止して再開しようとすると、IllegalStateException.

できること:

doInBackground()で、一定の時間間隔が経過した後、ネットワーク接続を確認し続けます。ネットワークが利用できない場合は、ネットワークをキャンセルして、データをアプリケーション キャッシュに保存します。特定のタイムアウト後にネットワークをチェックし続けるタイマーを開始します。ネットワークが再び戻ったら、中断したところから新しい AsyncTask を開始します (キャッシュに何があるかを判断するため)。最後の部分は、サーバーからダウンロード済みの量と残りの量に関するマーカーが必要になるため、私にはよくわかりません。すべてのサーバーがそれを提供しているわけではないと思います。これは、再開可能なダウンロードとそうでないダウンロードがあるという事実から明らかです。

もう 1 つの非常に汚い方法は、ネットワーク接続が失われたときにバックグラウンド スレッドをスリープ状態にすることです

何かのようなもの :

if(networkConnectivity == false)
do
{

   sleep(5000); // pauses the thread for 5 seconds

}while(networkConnectivity == false);
于 2013-09-15T23:48:31.120 に答える