Я столкнулся с той же проблемой.Ни одно из вышеперечисленных решений не помогло мне.Затем я выяснил, что, может быть, это поможет кому-то другому.
В потоке пользовательского интерфейса я вызываю следующие коды:
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 и inifinite loop оба ждут друг друга, чтобы закончить.Таким образом, код застрял!
Решение - изменить дизайн!