执行这么多次时,Asynctask出错了

时间:2016-10-22 12:34:07

标签: java android android-asynctask

我想制作一个像Timberman game这样的进度条。 这是我的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。 谁能帮我? :(。

0 个答案:

没有答案