2011-10-19 11 views
1

AsynctaskでURLをロードしていますが、ダウンロードが始まる前にすべての接続問題を処理しましたが、データをwifiに切り替えるときにアプリが強制終了しますダウンロード中。だから問題は:Android:ダウンロード中の接続変更を強制終了する

サービス上でAsynctaskを実行する必要がありますか、それを一時停止して接続が利用可能になったときに再開する方法はありますか?接続が利用可能になった後

if (isOnline()) { 
     getData(); 
    } else { 
     IntentFilter intentFilter = new IntentFilter(
       "android.net.conn.CONNECTIVITY_CHANGE"); 
     registerReceiver(new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       // TODO Auto-generated method stub 
       if (isOnline()) { 
        unregisterReceiver(this); 
        getData(); 
       } 
      } 
     }, intentFilter); 
    } 

しかし、どのように私はAsynctaskを再開することができます:私はすでに接続が確立された直後にダウンロードを開始受信機を持っていますか?

答えて

0

これは間違いなく、サービスのバックグラウンドで行いたいことです。 IntentServiceクラスのドキュメントを参照することをお勧めしますか?これをサービスで行うことで、アクティビティ内でAsyncTaskをクリーンアップすることを確実にするという不自由さを無くす必要はありません。ダウンロードが完了するまで、サービスはバックグラウンドで実行され続けます。

+0

偉大な答えをありがとう。 http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/ –

+0

あなたが気にしないならば、もう一つの質問:ダウンロードはまだありません読み込み中に接続が変わると完了しません。それ以外の場合は正常に動作します。ダウンロードが中断したかどうかを知るには? onCreateメソッドで接続変更レシーバーを登録し、接続が変更されたときとダウンロードが成功したことを受信者に知らせるためにfalseを設定したときに、ダウンロードメソッドを起動しますか?簡単な方法が必要です。 –

+0

@Liroそれはおそらくここで別の質問として最も頼まれている:)私はそれを見た場合私はそれを投票し、それに答えるとしようとしていることを知っている;) –

関連する問題