SyncAdapter
データベース同期を処理するために使用する新しい Android アプリを作成しています。すべてが整っており、アプリは正常に動作していますが、2 回ログインしていることに気付きました。
最初のログインは、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()
メソッドが呼び出されます。そして、このメソッド内で、もう一度ログイン エンドポイントにアクセスしています。Authenticator
AbstractAccountAuthenticator
それ以降は、有効期限が切れるまで、ログイン エンドポイントに再度ヒットすることはありませんauthToken
。
これはあまり気になりませんが、ログインを 2 回行わないようにする方法があれば教えてください。