私のサービスで私は以下のコードを持っていると私はフラグが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 static boolean flag = false;常にその値がメモリから読み込まれます。 –