Abbrechen AsyncTask nach einiger Zeit

Könnte dies eine doppelte Frage, aber ich fand nicht was ich suchte.
Ich rufe einen AsyncTask in der UI-Aktivität new LoadData().execute(); und in doInBackground rufe ich eine Methode, die Zeit braucht. Ich will unterbrechen diesen thread, wenn die Daten nicht wieder nach einiger Zeit.
Unten ist der code, wie ich versuchte, dies zu tun.

class LoadData extends AsyncTask<String, String, String>
{
    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    startTime = System.currentTimeMillis();
    }
    protected String doInBackground(String... args)
    {

        DataCollector dc = new DataCollector();
        data = dc.collectData(query);
        //Here I check if the time is greater than 30 seconds then cancel
        if(((System.currentTimeMillis()-startTime)/1000)>30)
        {
           cancel(true);
        }
    return null;
    }
}

Aber das bedeutet nicht aufhören, die Aufgabe nach 30 Sekunden, in der Tat ist es mehr Zeit nehmen.
Ich habe versucht get(long timeout, TimeUnit unit); als gut, aber dass funktioniert auch nicht.

Kann jemand mir zeigen, wie kann ich es machen, oder wie verwende ich isCancelled() in doInBackground.

Dank.

InformationsquelleAutor AL̲̳I | 2013-06-26
Schreibe einen Kommentar