Ошибка Asynctask при выполнении так много раз

#java #android #android-asynctask

#java #Android #android-asynctask

Вопрос:

Я хочу создать индикатор выполнения, подобный игре Timberman. Это мой Java-код:

 boolean flagProgress=false;
private void click() {// click 1 button
    if(!flagProgress){
        taskProgress=new TaskProgress();
        AsyncTaskCompat.executeParallel(taskProgress,
                500 10); 
    }
    else {
        taskProgress.cancel(true);
        int progress=progressBar.getProgress();
        taskProgress=new TaskProgress();
        AsyncTaskCompat.executeParallel(taskProgress,
                progress 10);
    }
}  

class TaskProgress extends AsyncTask<Integer, Integer, Void> {

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        doGameOver();
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        flagProgress=true;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        progressBar.setProgress(values[0]);            
    }

    @Override
    protected Void doInBackground(Integer... params) {
        if(params[0]>1000)// max 1000
            params[0]=1000;
        setProgress(params[0]);

        for(int i=params[0];i>=0;i--) {

            if(isCancelled())
                break;
            publishProgress(i);
            SystemClock.sleep(100);
        }
        return null;
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();
    }
}
  

Все шло правильно (мой индикатор выполнения выглядел как индикатор выполнения в игре Timberman), пока я не сыграл в свою игру 20 или более раз (игра закончена и играется снова). Мой индикатор выполнения остановился, и иногда звуковой эффект не воспроизводился. Примечание: У меня также есть другая AsyncTask, поэтому я использую AsyncTaskCompat.executeParallel.
Кто может мне помочь? : (.