0

ボタンクリックを実装して、サービスの内部クラスであり、サービス内で実行されるAsyncTaskを停止しようとするアクティビティがあります。

主な活動

            if (s.equals("Stop scanning")) {
                fullscan.cancel(true);
                stopService(new Intent(AnalyzeActivity.this, ScanService.class));
                txtView.setText("Scanning is stopping...");
                txtView.setText("Scanning stopped");
                but.setText("Start scanning");
            }

サービスのAsyncTask(フルスキャン)doInBackground

if (int i = 0; i < myList.size(); i++ )
        if (isCancelled()) {
            return null;
        }
}
return null;

しかし、を呼び出した後でも呼び出されないようですfullscan.cancel(true)

4

1 に答える 1

0

あなたの活動はどのようにサービスにつながっていますか? アクティビティは、それにバインドされている基礎となるサービス (ref: Bound Services ) とのみ通信し、 の と通信する必要はありませServiceAsyncTask

インスタンスでは、ローカルの IBinder 実装がcancelTask()メソッドまたは類似のものを公開する必要があります。アクティビティがサービスの下で完了している作業を停止する必要がある場合、アクティビティ コードはサービスへの参照を取得する必要があります (これは、アクティビティがサービス ref: に接続するときに発生しますonServiceConnected) cancelTask

次に、サービスは、参照している独自の AsyncTask を停止します。

于 2013-02-15T10:02:36.520 に答える