我正在開發一個應用程序,用於解析HTML中的數據。其中一個被解析的數據是一個隨時間增加的整數,而不是不斷請求數據,我希望有一個間隔整數的任務。由於我需要將值更新到TextView中,我決定使用AsyncTask而不是定時器。如何重新啓動AsyncTask或避免運行
我的問題是我希望能夠重新啓動我的任務,一旦我知道它已經完成,或者如果它目前正在運行,只是避免操縱它。
這裏是我的AsyncTask:
class TurnsUpdate extends AsyncTask<Void, Integer, Exception>
{
protected void onPreExecute()
{
turns = Integer.parseInt(DATABASE.getValue("turns").replaceAll(" T", ""));
}
protected Exception doInBackground(Void...voids)
{
while (turns < maxTurns)
{
try
{
Thread.sleep(sleep);
}
catch (InterruptedException e)
{
return e;
}
turns++;
publishProgress(turns);
}
return null;
}
protected void onProgressUpdate(Integer... turns)
{
infoTurns.setText(Integer.toString(turns[0]) + " T");
}
protected void onPostExecute(Exception e)
{
vibrator.vibrate(500);
}
}
我嘗試啓動或避免:
if ((HOME.updateTurns == null || HOME.updateTurns.getStatus() == AsyncTask.Status.FINISHED) && HOME.updateTurns.getStatus() != AsyncTask.Status.RUNNING)
{
HOME.updateTurns = (UpdateTurns) new UpdateTurns();
HOME.updateTurns.execute();
}
我要對這個正確?
我使用TurnsUpdate創建了自己的公共類,並使infoTurns成爲受保護的參考,從而解決了這個問題。據我所知,這一切都可以工作。 – 2010-09-24 20:06:42
我說得太快了。我在完成完成後重新啓動AsyncTask仍然有問題,或者在運行時避免它。 – 2010-09-24 20:33:09