我正在使用線程來運行手電筒,並且我想在按下後退後停止該線程。按下後停止手電筒
我用下面的代碼來啓動線程:
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Flashing...");
progressDialog.show();
thread = new Thread(MainActivity.this);
thread.start();
和線程正在做:
public void run() {
isOn = false;
cam = Camera.open();
p = cam.getParameters();
try {
for (int i = 0; i < pattern.length; i++) {
if (isOn) {
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
Thread.sleep(pattern[i]);
isOn = false;
} else {
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
Thread.sleep(pattern[i]);
isOn = true;
}
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
cam.release();
handlerFinish.sendEmptyMessage(0);
}
private Handler handlerFinish = new Handler() {
@Override
public void handleMessage(Message msg) {
progressDialog.dismiss();
}
};
我已經試過這停下來,但只有被開除進度對話框但手電筒還在工作:
@Override
public void onBackPressed() {
super.onBackPressed();
p.setFlashMode(Parameters.FLASH_MODE_OFF);
cam.setParameters(p);
isOn = false;
thread.stop();
}
我能做些什麼來實現我的目標(停止日讀完後按下手電筒)?
嘗試的Thread.join(),而線程運行,直到停止 - 即等到線程停止,並試圖阻止它在嘗試sorrunded while循環趕上一次達到退出循環 –