i am developing an android game , i have two methods for the gameplay that the one calls the others repeatable after every round. When i minimized the app from mobile i can hear the sounds from the app, that means that the methods keep running.What do you think is the proper way to "kill" this activity when the app minimized
UPDATE:
I can understand that i must do this in onPause
,but the question is what is the proper way to stop the loop(the two methods calls its other repeatable) from running in on pause?I must do this with a global variable to inform the loop to stop, or is another way to stop all the activity from running ?
UPDATE: First method:
protected void playPattern() throws IOException {
checkList.clear();
patternList.clear();
Log.e("Debug", "start playpattern");
switch (turn) {
case 0:
Log.e("Debug", " playpattern case 0");
handlerLa.postDelayed(new Runnable() {
@Override
public void run() {
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 800);
change.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
checkPattern();
}
}, 1400);
break;
case 1:
Log.e("Debug", " playpattern case 1");
handlerLa.postDelayed(new Runnable() {
@Override
public void run() {
Log.e("Debug", " playpattern case 1 prwti nota");
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
Log.e("Debug", " playpattern case 1 prwti nota" + " >>" + noteNumnber);
playNote(noteNumnber);
}
}, 800);
handlerRe.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
Log.e("Debug", " playpattern case 1 deferi nota" + " >>" + noteNumnber);
playNote(noteNumnber);
}
}, 1200);
change.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
checkPattern();
}
}, 1400);
break;
case 2:
Log.e("Debug", " playpattern case 2");
handlerLa.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 800);
handlerRe.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 1200);
handlerMi.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 1600);
change.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
checkPattern();
}
}, 1800);
break;
case 3:
Log.e("Debug", " playpattern case 3");
handlerLa.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 800);
handlerRe.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 1200);
handlerMi.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 1600);
handlerDof.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
noteNumnber = 10;
noteNumnber = r.nextInt(4);
playNote(noteNumnber);
}
}, 2000);
change.postDelayed(new Runnable() {
@Override
public void run() {
changeColor(noteNumnber);
checkPattern();
}
}, 2200);
break;
}
}
second method :
protected void checkPattern() {
waitPlayer.postDelayed(new Runnable() {
@Override
public void run() {
if (checkList.equals(patternList)) {
Log.e("Debug", "Correct");
turn++;
try {
playPattern();
} catch (IOException e) {
e.printStackTrace();
}
} else {
Log.e("Debug", "InCorrect");
try {
playPattern();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}, 6000);
}