Состояние AsyncTask всегда running

Рейтинг: 0Ответов: 1Опубликовано: 17.10.2014

Проблема: после выполнения кода в 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();
    }
}); 

Ответы

▲ 1

Согласно комментарию @gcoder:

Статус AsyncTask становится "Finished" после завершения метода onPostExecute.