这个问题有点老了,但我认为它仍然值得关注。
AccountManager,
yncAdapter然后
ContentProvider一起去。
- 你不能有一个
SyncAdapter
没有Account在AccountManager
。 你不能有一个
SyncAdapter
没有ContentProvider
。
但是你可以:使用
ContentProvider
没有其他的。在
AccountManager
没有其他功能的情况下使用(但在AccountManager
没有SyncAdapterAndroid 2.2 / Froyo API 8
之前的情况下不能使用)
用AccountManager/ SyncAdapter/ ContentProvider
:AccountManager
为用户提供一个中心点(“设置”>“帐户”)以定义其凭据Android
决定何时可以通过进行同步SyncAdapter
。这样可以优化电池电量(例如,当网络中断时不进行同步)ContentProvider
是跨应用程序共享数据的便捷方法。注意:Android上还有其他进程间通信方法。ContentProvider
安排在后台数据库访问线程的AsyncQueryHanlder
帮助查询ContentProvider
在后台线程,防止应用程序没有响应(ANR)错误,同时不要求你明确地处理线程。ContentProvider与ContentResolver
的观察者相关联:这意味着在更改内容时很容易通知视图
底线:框架
AccountManager/
SyncAdapter/
ContentProvider帮助,如果你想将数据从一个网络资源同步。API 7需要伪造/哑巴实现。
- 如果只想存储数据,则应考虑一种更简单的数据存储机制
- 如果您只需要获取唯一资源,则可以使用 AsyncTaskLoader
- 如果要异步加载图像,则可以使用特殊的库,例如Square Picasso
- 如果您只想在给定时间执行一些代码,则可以考虑“服务/警报”
- 仅可从API> = 7获得(这不再重要)
最后,如果您使用SyncAdapter
,请认真考虑Firebase Cloud Messaging(以前称为Google Cloud Messaging)又名“推送通知”,以获取更新的更新和优化的电池使用情况。v



