我已经在Android SDK中看到了AccountManager,它用于存储帐户信息。因此,我找不到任何针对其用途的一般性讨论。有人知道AccountManager的目的是什么以及它能给您带来什么好处的讨论吗?对于适合哪种类型的帐户有任何意见?您将在这里放置用于常规Web服务的用户帐户信息吗?

最佳答案

这个问题有点老了,但我认为仍然很感兴趣。
AccountManagerSyncAdapterContentProvider一起使用。

  • You cannot have a SyncAdapter without an Account in the AccountManager
  • You cannot have a SyncAdapter without a ContentProvider

  • 但是你可以:
  • 使用ContentProvider而不使用其他代码。
  • 不使用其他人使用AccountManager(但您在Android 2.2/Froyo API 8之前使用cannot use an AccountManager without a SyncAdapter )

  • 使用AccountManager/SyncAdapter/ContentProvider:
  • AccountManager为用户提供一个中心点(“设置”>“帐户”)以定义其凭据
  • Android决定何时可以通过SyncAdapter完成同步。这可能是优化电池的好方法(例如,当网络中断时不进行同步)
  • ContentProvider是在应用程序之间共享数据的便捷方法
    注意:有other methods of inter-process communication on Android
  • ContentProvider在后台线程中调度数据库访问。 AsyncQueryHanlder 帮助在后台线程中查询ContentProvider,从而防止了Application Not Responsive(ANR)错误,同时又不需要您显式处理线程。
  • ContentProviderContentResolver的观察者绑定(bind):这意味着在更改内容时很容易通知 View

  • 底线:如果您想同步Web资源中的数据,则AccountManager/SyncAdapter/ContentProvider框架会有所帮助。 API 7上需要Fake/Dumb implementations
  • 如果只想存储数据,则应考虑使用simpler mechanism for data storage
  • 如果只需要获取唯一资源,则可以使用 AsyncTaskLoader
  • 如果要异步加载图像,则可以使用专用库,例如​​Square Picasso
  • 如果您只想在给定时间执行一些代码,则可以考虑服务/警报
  • 仅可从API> = 7获得(不再重要)

  • 最后,如果您使用SyncAdapter,请认真考虑Firebase Cloud Messaging(以前称为Google Cloud Messaging)又名“推送通知”,以获取更新的更新和优化的电池使用情况。

    关于android - 我应该将Android AccountManager用于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2720315/

    10-11 03:35