Я видел AccountManager в Android SDK, и он используется для хранения информации об учетной записи. Таким образом, я не могу найти никакого общего обсуждения того, для чего это предназначено. Кто-нибудь знает какие-либо полезные дискуссии о том, что намерение позади AccountManager и что это покупает Вас? Любое мнение о том, для каких типов счетов это подходит? Будет ли это место, куда вы поместите информацию об учетной записи своего пользователя для общего веб-сервиса?
154
Ответы:
Этот вопрос немного старый, но я думаю, что он все еще интересен.
AccountManager
,SyncAdapter
ИContentProvider
идти вместе.SyncAdapter
безAccount
вAccountManager
.SyncAdapter
безContentProvider
.Но вы можете:
ContentProvider
без других.AccountManager
без других (но вы не можете использоватьAccountManager
безSyncAdapter
до Android 2.2 / Froyo API 8)С
AccountManager
/SyncAdapter
/ContentProvider
:AccountManager
дает пользователям центральную точку (Настройки> Учетные записи) для определения их учетных данныхSyncAdapter
. Это может быть полезно для оптимизации батареи (например, синхронизация не выполняется, когда сеть не работает)ContentProvider
Это удобный способ обмена данными между приложениями. Примечание . В Android есть и другие способы межпроцессного взаимодействия ..ContentProvider
планирует доступ к базе данных в фоновом потокеAsyncQueryHanlder
Помогает запрашиватьContentProvider
в фоновом потоке, предотвращая ошибки Application Not Responsive (ANR) и не требуя явной обработки потоков.ContentProvider
привязывается кContentResolver
российскому наблюдателю: это означает, что легко уведомлять мнения при изменении контентаИтог : фреймворк
AccountManager
/SyncAdapter
/ContentProvider
помогает, если вы хотите синхронизировать данные с веб-ресурса. Ложные / глупые реализации требуются в API 7. ТакжеAsyncTaskLoader
Наконец, если вы используете
SyncAdapter
, серьезно подумайте о Firebase Cloud Messaging (ранее Google Cloud Messaging), также известном как «push-уведомления», чтобы иметь более свежие обновления и оптимизированное использование батареи.источник
Класс AccountManager интегрирован с вашими учетными записями телефона. Поэтому, если вы будете следовать всем инструкциям и работать правильно, вы увидите свои учетные записи в меню «Настройки-> Учетные записи и синхронизация». Оттуда вы можете настроить их или даже удалить их. Кроме того, accountManager имеет кеш аутентификационных билетов для ваших аккаунтов. Это также можно использовать, если вы не планируете синхронизировать свою учетную запись (насколько я знаю).
Если вы не хотите, чтобы ваши учетные записи отображались в этом меню, вам не следует использовать AccountManager и хранить данные учетных записей в другом месте (возможно, в общих настройках) http://developer.android.com/guide/topics/data/data -storage.html
источник
От http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/ :
источник
Это
AccountManager
хорошо по следующим причинам:Accounts
, поскольку вы можете легко управлять этим в своем приложении, не прибегая к этой причудливойAccounts
вещи…Accounts
состоит в том, чтобы избавиться от традиционной авторизации с именем пользователя и паролем каждый раз, когда пользователь запрашивает авторизованную функцию, потому что аутентификация происходит в фоновом режиме, а пользователя запрашивают его пароль только в определенных условиях, что Я доберусь до этого позже.Accounts
функции в Android также устраняет необходимость определения собственного типа учетной записи. Вы, вероятно, сталкивались с приложениями, использующими учетные записи Google для авторизации, что избавляет от необходимости создавать новую учетную запись и запоминать ее учетные данные для пользователя.Accounts
можно добавить независимо через Настройки → АккаунтыAccounts
. Например, клиент может одновременно получать доступ к защищенным материалам на своем устройстве Android и ПК без необходимости повторных входов в систему.Accounts
функции в Android является разделение двух сторон, участвующих в любом бизнесе, отAccounts
так называемого аутентификатора и владельца ресурса, без ущерба для учетных данных клиента (пользователя). Термины могут показаться довольно расплывчатыми, но не сдавайтесь, пока не прочитаете следующий абзац… 😉Позвольте мне остановиться на последнем примере приложения для потокового видео. Компания A является владельцем бизнеса по потоковому видео, заключившего договор с компанией B на предоставление ее отдельным членам премиальных потоковых услуг. Компания B использует метод имени пользователя и пароля для распознавания своего пользователя. Для компании A, чтобы распознать премиум-членов B, одним из способов было бы получить их список от B и использовать аналогичный механизм сопоставления имени пользователя и пароля. Таким образом, аутентификатор и владелец ресурса совпадают (Компания A). Помимо обязательства пользователей запоминать второй пароль, весьма вероятно, что они устанавливают тот же пароль, что и профиль их компании B для использования услуг от A. Это, очевидно, не выгодно.
Чтобы устранить вышеуказанные недостатки, была введена OAuth. В качестве открытого стандарта для авторизации в приведенном выше примере OAuth требует, чтобы авторизация была выполнена Компанией B (аутентификатор), выпуская некоторый токен под названием Access Token для соответствующих пользователей (третье лицо) и затем предоставляя Компании A (владельцу ресурса) знак Таким образом, отсутствие знака означает отсутствие права на участие.
Я подробно остановился на этом и больше
AccountManager
на моем сайте здесь.источник