在我的服務中,我有下面的代碼,當flag設置爲true時我想打破循環。除非互聯網連接速度緩慢或差,否則它運行良好。然後,因爲它堅持下載部分,循環不會有效地中斷。任何解決方法? 解決方案是使用一個定時器,週期性地(每500毫秒)檢查標誌狀態。但是我不知道如何在標誌設置爲true時打破循環!如何打破while循環?
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){
}
}
你可以嘗試使標誌爲volatile:volatile static boolean flag = false;始終它的值將從內存中讀取。 –