我遇到了同样的问题。以上解决方案都不适合我。然后我发现问题可能对其他人有帮助。
在 UI 线程中,我调用以下代码:
public class XActivity ...{
onCreate(){
....
new SaveDrawingAsync(this).execute();
while(true)
{
if(MandalaActivity.saveOperationInProgress){
continue;
}
super.onBackPressed();
break;
}
...
}
}
我的 AsyncTask 类定义:
public class SaveAsync extends AsyncTask<Object, Void, Void> {
@Override
public Void doInBackground(Object... params) {
saveThem(); // long running operation
return null;
}
@Override
public void onPostExecute(Void param) {
XActivity.saveOperationInProgress = false;
}
@Override
public void onPreExecute() {
XActivity.saveOperationInProgress = true;
}
}
在上面的代码中 onPostExecute 没有被调用。这是因为 asynctask 执行后的无限循环。asynctask 和无限循环都在等待对方完成。因此代码卡住了!
解决方案是改变设计!