Hizmetimde aşağıdaki kod var ve bayrak true değerine ayarlandığında döngüyü kırmak istiyorum. İnternet bağlantısı yavaş ya da zayıf olduğunda iyi çalışır. Sonra indirme kısmına yapıştığında, döngü verimli bir şekilde kırılmaz. Herhangi bir geçici çözüm var mı? Bir çözüm, periyodik olarak (her 500 ms'de bir) bayrak durumunu kontrol eden bir zamanlayıcı kullanıyor. Ancak, bayrak true olarak ayarlandığında döngüyü nasıl kırılacağını bilmiyorum!Döngü nasıl kırılır?
static boolean flag = false;
public int onStartCommand(Intent intent, int flags, int startId) {
new Thread (new Runnable(){
@Override
public void run() {
foo();
}
}).start();
return START_STICKY;
}
void foo(){
try{
while(true){
if (flag)
return;
//download some data which takes a few seconds
}
} catch (Exception e){
}
}
Sen bayrak gibi uçucu hale deneyebilirsiniz: uçucu statik boolean bayrak = false; Her zaman onun değeri hafızadan okunacaktır. –