1

そのため、Asynctask を使用して URL を読み込んでおり、ダウンロードを開始する前に考えられるすべての接続の問題を処理しましたが、ダウンロード中にデータから Wi-Fi に切り替えると、アプリが強制終了します。質問は次のとおりです。

サービスで 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 を再開できますか?

4

1 に答える 1

0

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

于 2011-10-19T04:59:41.830 に答える