Ich habe eine AsyncTask
, die einen Webservice aufruft und ein JSON-Objekt daraus abruft. Ich möchte eine Zeitüberschreitung für diese Aufgabe festlegen, so dass die AsyncTask abgebrochen wird, wenn etwas schief geht (z. B. wenn die Internetverbindung unterbrochen wird oder usw.). mein Code hier so weit ist:AsyncTask ruft 'onCancelled' nicht sofort auf, wenn AsyncTask.cancel (true) in android aufgerufen wird
@Override
protected void onStart() {
final GetRequestsTask requestTask = new GetRequestsTask();
requestTask.execute(createUrl());
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Log.d("myapp", "entered handler");
if (requestTask.getStatus() == AsyncTask.Status.RUNNING) {
Log.d("myapp", "entered cancelling");
requestTask.cancel(true);
}
}
}, TIME_OUT);
}
Das Problem, das ist, wenn die handler
erreicht „eingegeben Cancelling“ Punkt und sendet das Signal an die AsyncTask
abbrechen, wird es nicht abbrechen und rufen onCancelled()
sofort (es wird nach 10 Sekunden oder so, wenn überhaupt) genannt
Meine GetRequestTask
ist linear, was bedeutet, dass es nicht eine Schleife im Innern hat, so kann ich nicht manuell in der doInBackground()
Methode für isCancelled()
überprüfen.
Was empfehlen Sie mir zu tun?