在我的 java 代码中,我有一个按钮单击事件,它执行一些操作,如下所示
OnClick -> AsyncTask [OpenReader] -> if(未打开,返回) -> else 继续处理 onClick
实际发生的是单击了一个按钮,说在该单击中需要处理一个方法,但是在启动该过程之前,我必须执行/检查实际上在该过程启动之间并且是一个 AsyncTask 的 openReader,所以什么发生的情况是当我单击 openReader 调用启动并在此之前完成我的进程之后启动它不应该开始直到 AsyncTask 完成,现在如果我通过 while 循环等待 AsyncTask 完成它会挂起 GUI,现在有什么可能解决这个问题?
@Override
public void onClick(View v) {
logMsg("....", R.color.GREEN);
String phNum = phoneNumber.getText().toString();
// Check if phone number is valid
if (!checkNumber(phNum)) {
required.setTextColor(Color.RED);
validNum = false;
return;
}
isReady = false;
// Prepare device for use
new openReader().execute();
// Have to wait for openReader to finish here
// and then proceed
int id = v.getId();
switch (id) {
case R.id.btnRead:
flag = 1;
// Process to be initiated here
break;
default:
break;
}
}