我已经在Android SDK中看到了AccountManager,它用于存储帐户信息。因此,我找不到任何针对其用途的一般性讨论。有人知道AccountManager的目的是什么以及它能给您带来什么好处吗?对于适合哪种类型的帐户有任何意见?您将在这里放置用于一般Web服务的用户帐户信息吗?
我已经在Android SDK中看到了AccountManager,它用于存储帐户信息。因此,我找不到任何针对其用途的一般性讨论。有人知道AccountManager的目的是什么以及它能给您带来什么好处吗?对于适合哪种类型的帐户有任何意见?您将在这里放置用于一般Web服务的用户帐户信息吗?
Answers:
这个问题有点老了,但我认为仍然很感兴趣。
AccountManager
,SyncAdapter
然后ContentProvider
一起去。
但是你可以:
ContentProvider
没有其他的。AccountManager
未经他人(但你不能使用AccountManager
没有SyncAdapter
Android 2.2的前/升级Froyo API 8)用AccountManager
/ SyncAdapter
/ContentProvider
:
AccountManager
为用户提供一个中心点(“设置”>“帐户”)以定义其凭据SyncAdapter
。这可以优化电池电量(例如,当网络中断时不进行同步)ContentProvider
是跨应用程序共享数据的便捷方法。注意:Android上还有其他进程间通信方法。ContentProvider
安排在后台数据库访问线程AsyncQueryHanlder
帮助查询ContentProvider
在后台线程,防止应用程序没有响应(ANR)错误,同时不要求你明确地处理线程。ContentProvider
与ContentResolver
的观察者相关联:这意味着在更改内容时很容易通知视图底线:框架AccountManager
/ SyncAdapter
/ ContentProvider
帮助,如果你想将数据从一个网络资源同步。API 7要求使用伪造/ 哑巴实现。
AsyncTaskLoader
最后,如果您使用SyncAdapter
,请认真考虑Firebase Cloud Messaging(以前称为Google Cloud Messaging)又名“推送通知”,以获取更新的更新和优化的电池使用情况。
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/:
难题的第一部分称为帐户身份验证器,它定义了用户的帐户在“帐户和同步”设置中的显示方式。实施帐户身份验证器需要三部分:从onBind方法返回AbstractAccountAuthenticator的子类的服务,提示用户输入其凭据的活动以及描述您的帐户在显示给用户时的外观的xml文件。您还需要向您的AndroidManifest.xml添加android.permission.AUTHENTICATE_ACCOUNTS权限。
的AccountManager
优点在于以下几个方面:
Accounts
但是,这不是使用它的主要原因,因为您可以轻松地在应用程序中进行管理,而无需花哨的Accounts
东西…。Accounts
是,每次用户请求授权功能时,都无需使用用户名和密码来进行传统授权,因为身份验证是在后台进行的,并且仅在特定条件下才要求用户输入密码,因此稍后再说。Accounts
在android中使用该功能还无需定义自己的帐户类型。您可能使用Google帐户进行授权时遇到了这些应用程序,这省去了创建新帐户并为用户记住其凭据的麻烦。Accounts
可以通过设置→帐户独立添加Accounts
。例如,客户端可以在其android设备和PC中同时访问受保护的资料,而无需重复登录。Accounts
在android中使用该功能的重要原因是,在Accounts
不损害客户端(用户)凭据的情况下,将与所涉及的任何业务相关的双方(称为身份验证者和资源所有者)分开。这些术语可能看起来比较模糊,但是在您阅读以下段落之前,请不要放弃……😉让我用一个视频流应用程序的例子来详细说明后者。公司A是与公司B签订合同的视频流媒体业务的所有者,以为其某些成员提供高级流媒体服务。公司B使用用户名和密码方法来识别其用户。为了使A公司认识到B的高级会员,一种方法是从B获得他们的名单,并利用类似的用户名/密码匹配机制。这样,身份验证者和资源所有者是相同的(公司A)。除了用户必须记住第二个密码的义务外,他们很有可能使用与公司B的配置文件相同的密码来使用来自A的服务。这显然是不利的。
为了消除上述缺点,引入了OAuth。作为授权的开放标准,在上面的示例中,OAuth要求由B公司(身份验证者)进行授权,方法是向符合条件的用户(第三方)发出称为访问令牌的令牌,然后向A公司(资源所有者)提供令牌。因此,没有令牌就意味着没有资格。
我已经对此进行了详细说明,并AccountManager
在我的网站上进行了详细说明。