我正在使用SyncAdapter
創建一個新的Android應用程序來處理數據庫同步。 我有一切就位,應用程序工作正常,但我注意到,我登錄了兩次。使用SyncAdapters時登錄兩次
當AuthenticatorActivity
類(它延伸AccountAuthenticatorActivity
)驗證用戶和密碼時,首次登錄時發生。
如果用戶和密碼都正確的AuthenticatorActivity
那麼做:
- 如果
account
不存在,它使用mAccountManager.addAccountExplicitly()
- 的
authToken
使用intent.putExtra(AccountManager.KEY_AUTHTOKEN, authToken);
這是保存創建基本上是從Android樣本中複製/粘貼的,所以我猜這沒關係。
的問題是,當SyncAdapter
啓動和使用
authtoken = mAccountManager.blockingGetAuthToken(account,
AuthenticatorActivity.PARAM_AUTHTOKEN_TYPE, true);
的getAuthToken()
方法延伸AbstractAccountAuthenticator
的Authenticator
類中被調用。在這個方法中,我再次敲擊登錄端點。
從此時起,直到authToken
到期爲止,登錄端點才被再次命中。
這並不困擾我很多東西,但我想知道是否有辦法避免兩次登錄。
如何使用'AccountManager.setAuthToken()'而不是將令牌返回到捆綁包中? – alexanderblom 2012-07-25 15:53:45
@alexanderblom:我也試過。沒有不同。 – Macarse 2012-07-25 16:54:24
我想兩個登錄背後的原因是爲了確保auth令牌是最新的,但我找不到來源支持我。我記得當我在去年的Google I/O中首次嘗試使用C2DM示例時,在某個地方閱讀它... – Yenchi 2012-07-30 16:13:02