【发布时间】:2014-10-27 04:40:44
【问题描述】:
我在我的应用程序中使用同步适配器。该应用程序应每 3 小时执行一次同步。这可以通过ContentResolver.addPeriodicSync 完成。但是,在此之前,对于每个同步请求,我都需要发送用户的访问令牌。令牌的到期时间为 2 小时。因此,在任何同步请求之前,它需要有一个有效的访问令牌。如果访问令牌已过期,则需要为用户更新一个新令牌。
我想出的一个解决方案是使用AlarmManager 设置重复警报。当警报触发时,IntentService 将启动。并刷新用户的访问令牌。获得新令牌后,同步请求将发送到SyncAdapter,使用ContentResolver.requestSync。我不确定这是否是一种好方法或任何其他有效的方法。
【问题讨论】:
-
你让用户在同步时手动请求访问令牌怎么样?
-
应用会每隔 3 小时在后台自动同步数据。如何检查用户是否正在使用应用程序,何时触发定期同步。 gmail、facebook 或 twitter 等应用程序永远不会要求用户一次又一次地同步输入他们的数据。他们遵循什么方法来做到这一点?
-
大多数访问令牌都带有一个刷新令牌,可让您获得一个新令牌。
-
@ianhanniballake 是的,我有。仅使用它,我正在刷新访问令牌。我的问题是当同步定期运行时,不知道访问令牌是否有效。所以我已经发布了我想出的解决方案,以在我的帖子的后半部分处理这个问题。我不确定这是否是正确的方法,还是有更有效的方法。
-
很抱歉,我的声明“用户手动请求访问令牌”可能让您感到困惑。我的意思是您不必创建警报来刷新令牌,只需在使用同步适配器同步数据时执行即可。
标签: android android-syncadapter