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()メソッドが呼び出されます。そして、このメソッド内で、もう一度ログイン エンドポイントにアクセスしています。AuthenticatorAbstractAccountAuthenticator
それ以降は、有効期限が切れるまで、ログイン エンドポイントに再度ヒットすることはありませんauthToken。
これはあまり気になりませんが、ログインを 2 回行わないようにする方法があれば教えてください。