#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.
Кто может мне помочь? : (.