Android: рекомендации AsyncTask: частный class или открытый class?

В настоящее время я разрабатываю некоторые приложения для Android в команде, и в течение последних месяцев мы использовали два разных подхода (тот, который я лично предпочитаю, а другой, который предпочитает другой разработчик).

Хотя пока результаты те же, это заставило меня задуматься … мы должны:

  • используйте AsyncTasks в качестве частных classов внутри Деяний, которые их используют.
  • или использовать AsyncTasks как отдельные публичные classы, которые получают контекст активности

Какой-либо подход, рекомендованный Google?

Как об этом говорит ваш опыт (преимущества, недостатки, проблемы)?

Внутренние classы хороши для представления объектов, которые должны быть частными или каким-то образом тесно связаны с окружающим classом. Иногда возникают технические причины для использования внутренних classов (например, имитация замыканий). Они также сокращают загрязнение пространства имен.

Одним из недостатков внутренних classов является то, что если они получают доступ к закрытым членам (полям или функциям) охватывающего classа, компилятор будет генерировать функции доступа к этим членам. Языковые пуристы будут утверждать, является ли это нарушение инкапсуляции хорошим делом или плохим веществом. Функции доступа добавляют немного служебных данных для каждого доступа (что обычно не является фактором, но там оно). Другим недостатком является то, что он делает исходный файл более сложным и, следовательно, сложнее управлять. (Меня иногда утомляли, редактируя функцию во внутреннем classе, думая, что это было во внешнем classе, и наоборот). Наконец, внутренние classы, как правило, не могут использоваться повторно, в то время как отдельные classы часто могут быть параметризованы, чтобы иметь многократное использование ,

Эти плюсы и минусы у меня на голове. Я уверен, что у других будут дополнительные мысли.

ОБНОВИТЬ:

В этом видеообъявлении Google IO внутренняя опция AsyncTask четко обозначена как неправильная опция.

Это не имеет значения, используйте то, что имеет наибольший смысл для вашего кода. Важно следить за задачей async, которая удерживает ссылку на активность после того, как действие было уничтожено, либо неявно, как внутренний class активности, либо явно, если ему задан объект activity / context.

  • Выполнить AsyncTask несколько раз
  • Asynctask vs Thread in android
  • Общий class для AsyncTask в Android?
  • Android: Как запустить asynctask из другого файла classа?
  • Нити AsyncTask никогда не умирают
  • Как запустить задачу async для каждого x mins в android?
  • Android AsyncTask Индикатор выполнения
  • Как правильно использовать AsyncTask в Android
  • Остановить метод AsyncTask doInBackground
  • Внутренний class может получить доступ, но не обновлять значения - AsyncTask
  • Android AsyncTask для длительных операций
  • Interesting Posts

    Chrome getUserMedia не запрашивает разрешения на локальном уровне

    Включить собственные символические ссылки NTFS для Cygwin

    Арифметический бит-сдвиг по целому знаку со знаком

    Как изменить порядок элементов панели задач?

    Как добавить префикс перед всеми элементами данных, которые находятся в столбце B?

    Как сделать gradleиентный цветный график времени в R

    При запуске WebDriver с браузером Chrome, получая сообщение, разрешены только локальные подключения, даже если браузер запускается правильно

    Различия между деструктором, удалением и завершением метода

    Android-навигатор для переключения курсора вправо

    Как вы изучите расширение Google Chrome перед его установкой?

    Как сортировать очень большие файлы

    Как сделать Windows 7 менее агрессивным в кэшировании памяти?

    Шифрование одного файла с паролем и ключевым файлом

    Алгоритм поиска двух повторяющихся чисел в массиве без сортировки

    как программно подделывать событие касания к UIButton?

    Давайте будем гением компьютера.