Kodumda her X saniyede çalışan bir işleyici var. Her çalıştığında, bir görevi yürütür. Görev, kullanıcı etkileşimi olmaksızın 4 kez yürütüldüğünde, ana etkinliğime geri dönmeye ayarlıyorum.Android: işleyici doğru şekilde iptal edilmiyor
final Handler h1 = new Handler();
final int delay1 = 400;
h1.postDelayed(new Runnable(){
public void run(){
enableRandomButton();
buttonsInPlay = sumVector(greenButtons);
if (buttonsInPlay >= 4){
if (currentScore > highScore){
highScore = currentScore;
}
// GO TO SCORE SCREEN
h1.removeCallbacks(this);
Intent intent = new Intent(Game.this, Main.class);
Game.this.startActivity(intent);
Game.this.finish();
}
h1.postDelayed(this, delay1);
}
}, delay1);
onu geri ana ekrana gider noktaya, öyle: İşte işleyicisi kodudur. Ancak, ana ekrana geri döndüğünde, KEEPS süresiz olarak yeni ana faaliyetler başlatıyor. Bu işleyicinin bir nedenle doğru şekilde iptal edilmediğinden şüpheleniyorum. Yukarıdaki kodumda bir sorun yoksa, kodumun geri kalanını paylaşmaktan memnuniyet duyacağım (çoğunlukla Android yaşam döngüsü yöntemlerim vb.). Teşekkürler!
"Ana etkinliğime geri dönmek için ayarladım." - Gerçekten geri dönmeyeceksin; Faaliyetin yeni bir örneğini başlatıyorsunuz. Geri dönmek isterseniz, sadece '' '(' '' '' '' '' aktivitesini bitir. Ayrıca, açıklanan davranışa neden olan yeni bir durum başlattığınız gerçeğinden de şüphe duyarım, ancak bunu belirleyebilmek için daha fazla kod göndermeniz gerekir. –
Kodumda açıkça Game.this.finish(); gerçi. Amaca başlamadan önce bitirmek zorunda mıyım? –
Üzgünüz, yorumumu düzenliyordum. _just_ 'finish()' yapmalısınız. Ana 'Etkinliğiniz' hala arka yığındaysa, önceki örneğe döner. Yeni bir tane başlatmaya gerek yok. –