Путают между syncAdapter, сервисами, загрузчиками, провайдерами и asynctask?

Я новичок в android и просматриваю документацию и некоторые уроки.

Сервисы

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

AsyncTask

Создает рабочий поток для выполнения фоновой задачи, например, получения данных с помощью api а затем уведомляет поток пользовательского интерфейса о onPostExecute() обратного вызова onPostExecute() .

Погрузчики

Выполняет операции над отдельным потоком, регистрирует слушателя и уведомляет об изменениях набора данных.

Провайдеры

Разделяйте данные между различными приложениями, выставляя их в файле манифеста.

SyncAdapter

Для синхронизации данных между устройством Android и веб-сервером.

Теоретически, я понимаю вышеприведенные понятия, как то, для чего они используются. Мне трудно привести их в порядок, как когда использовать что? Что было бы лучшим среди них? В каких сценариях что следует использовать?

Для кэширования я использовал sqlite или библиотеку, такую ​​как залп и ретроспиц

Как я уже сказал, я начинаю андроид и пытаюсь понять эти понятия.

Любые помощь и предложения будут оценены. Thankx заранее.

Несколько вещей, чтобы добавить к ответу Калеба:

Поставщик услуг:

На самом деле у Android есть много способов обмена данными. ContentProvider – это способ совместного использования базы данных между приложениями. Допустим, у вас есть 3 почтовых клиента на вашем телефоне, которые кэшируют данные из облака, если вы в автономном режиме. Имеет смысл, что вы поддерживаете только одну автономную базу данных своих писем. То же самое происходит, если у вас есть адресная книга, база данных sms или база данных твитов. И то же самое, если вы хотите обновить все эти данные. Вы только действительно хотите обновлять эти данные только один раз из облака, а не три раза каждый раз, что приводит меня к следующей теме – SyncAdapter.

SyncAdapter:

SyncManager достаточно умен, чтобы выполнять все запросы синхронизации за один раз, чтобы минимизировать время работы антенны и, следовательно, экономить заряд батареи. Кроме того, с помощью AccountManager пользователь телефона может самостоятельно отменить настройки синхронизации, но это только в том случае, если разработчик решил использовать SyncAdapter в первую очередь.

Кроме того, SyncAdapter можно использовать только с ContentProvider. Поэтому, даже если вы не хотите делиться своими данными с другими приложениями, вам нужно будет использовать поставщика контента, если вы хотите использовать SyncAdapter.

При этом ContentProviders очень сложно начинающим (даже промежуточным разработчикам) реализовать. Я бы предложил вам держаться подальше от них. Вы должны использовать ContentProvider, если он уже есть для того, что вы хотите сделать, но я не рекомендую вам создавать свои собственные.

Погрузчики:

Погрузчики хороши. Научитесь использовать их, если хотите отображать данные из локальной базы данных (или из ContentProvider). Они сэкономят вам время. В отличие от SyncAdapter, загрузчикам не требуется ContentProvider для их работы. Они могут напрямую обращаться к SQLite.

Сервисы:

Научитесь их использовать. Слишком много вещей, чтобы сказать о них. Важным моментом является то, что вы должны минимизировать время, в течение которого они остаются в живых, используя такие компоненты, как AlarmManager или BroadcastReceivers. Кроме того, вам нужно узнать разницу между службой и IntentService.

AsyncTask:

AsyncTask очень часто требуется в Android, чтобы избежать блокировки основного потока пользовательского интерфейса. Не думайте, что, поскольку вы используете AsyncTask, вы можете обойтись без использования Сервисов.

Обратите внимание, что многие обучающие программы для Android дают вам минимальный код для демонстрации концепции, поэтому они часто пропускают правильную потоковую обработку. Обратите внимание, что вы можете запустить свой собственный поток вручную, если хотите, но AsyncTask делает для вас другие вещи, которые делают его идеальным выбором для многих ситуаций, когда поток пользовательского интерфейса блокируется, и вы получаете ошибку «Неответчик приложения».

Библиотеки:

Там много хороших библиотек. Я не буду говорить, какие из них хорошие. Научитесь использовать те, которые все рекомендуют. Эти библиотеки могут многое сделать для вас (при условии, что вы достаточно хороши, чтобы заставить их работать). Существует немного кривой обучения, но она того стоит. И они имеют дело с Android на гораздо более высоком уровне абстракции, поэтому, как правило, многопоточность и многие другие вещи обычно заботятся о вас.

Есть много других вещей, которые я замалчиваю, или что я вообще не упоминал, но, как я уже сказал, я думаю, что ваш вопрос слишком широк. И если вы действительно хотите получить более подробную информацию, вам нужно сесть и прочитать некоторые руководства для разработчиков и посмотреть некоторые видеоролики, предоставленные Google.

Действительно быстрый ответ:

AsyncTask : короткая задача, которая может блокировать поток пользовательского интерфейса. Вы не возражаете, если они отменяются, и вы должны повторно запустить их.

Службы : используйте, когда у вас есть длинная задача, из-за которой вы не хотите, чтобы изменения были изменены. Бит для реализации, чем AsyncTask.

Погрузчики : предназначены для доступа к базе данных

SyncAdapter : здесь у вас нет данных в реальном времени. Вы планируете синхронизацию данных в момент подачи (например, синхронизировать почту, контактные данные и т. Д.). Допустим, у вас свежие данные каждый час.

Провайдеры : ничего общего не с этим. Это используется для обмена данными между приложениями. Вам все равно, как данные извлекаются приложением для обмена, вы просто знаете, что можете запросить данный ресурс.

Этот инфографика помогла мне лучше понять первые 3: https://raw.githubusercontent.com/stephanenicolas/robospice/master/gfx/RoboSpice-InfoGraphics.png