您必须将var设为处理canceled状态
例如,通过您的代码。
public void printOut (){
final Handler handler = new Handler();
boolean isCanceled = false
for (final int[] x = {0}; (x[0] < Integer.parseInt(spinner.getSelectedItem.toString()) && !isCanceled); x[0]++) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
//printer for my device
int query = PrinterInterface.queryStatus();
if (query == 1){
isCanceled = true
// return true
//printing goes here..
}else{
// returns false
x[0] = Integer.parseInt(spinner.getSelectedItem.toString());
}
}
},2000 * x[0]);
}
并且,如果要处理结果,则需要添加回调。
但是,我不明白,为什么要使用poseDelayed , for您是启动所有处理程序的。
更好,如果您检查query ,则在Handler之后执行逻辑