Хорошая практика создает анонимную AsyncTask для параллельного небольшого известного процесса замораживания?

Например: вы собираетесь сделать что-то, что займет несколько секунд, и не хотите замораживать ваш UI, верно? Вы можете использовать AsyncTask, но не хотите создавать внешний (или внутренний) класс для решения небольшой проблемы с замораживанием.

Итак, это хорошая оценка?

package com.example.stackoverflowsandbox; import android.os.AsyncTask; public class Foo { // Eg before call foo method you change you Activity to loading state. private void foo() { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground( final Void ... params ) { // something you know that will take a few seconds return null; } @Override protected void onPostExecute( final Void result ) { // continue what you are doing... Foo.this.continueSomething(); } }.execute(); } private void continueSomething() { // some code... } } 

Я столкнулся с этим, когда сжимаю битмапы и зацикливаю большой массив, чтобы обновлять некоторые данные внутри элементов.

Да, но не так, как вы это делаете.

Помните, что начиная с Honeycomb модель исполнения AsyncTasks по умолчанию является последовательной :

  new AsyncTask<Void, Void, Void>() { .... .... }.execute(); <------ serial execution 

Вместо этого используйте исполнитель пула потоков:

  new AsyncTask<Void, Void, Void>() { .... .... }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null); <------ parallel execution