Состояние AsyncTask всегда running
Проблема: после выполнения кода в doInBackground()
состояние AsyncTask
не становится finished,
а остаётся running (после этого интерфейс приложения тормозит, задача очень длительная).
Нужно, чтоб было finished. Что сделал не так?
Код (сокращён)
MyTask mt;
class MyTask extends AsyncTask<Void, Void, Void> {
int myProgressCount;
@Override
protected void onPreExecute() {
super.onPreExecute();
Toast.makeText(DeviceUARTContext, "onPreExecute Start Progress Bar",
Toast.LENGTH_LONG).show();
}
@Override
protected Void doInBackground(Void... params) {
// код задачи
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
Toast.makeText(DeviceUARTContext, "onPostExecute End Progress Bar",
Toast.LENGTH_LONG).show();
Toast.makeText(DeviceUARTContext, "asynctask status: "+mt.getStatus(),
Toast.LENGTH_LONG).show();
// здесь mt.getStatus() должно быть "Finished"
}
}
...
ReadDataBut = (Button) view.findViewById(R.id.button12);
ReadDataBut.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mt = new MyTask();
mt.execute();
}
});
Источник: Stack Overflow на русском