Метод AsyncTask doInBackground не вызывается - PullRequest
0 голосов
/ 20 января 2020

Я использую коды cognitouserpool внутри метода doInBackground класса AsynTask. Но мой метод не вызывает. Я попытался, проверив это с журналом. Он не работает.

AsyncTask

    public class AWSInitiator extends AsyncTask<Void, Void, Void> {
        private Context context;
        public AWSInitiator(Context context) {
            this.context = context;
        }
        @Override
        protected Void doInBackground(Void... voids) {
            CognitoUserPool.......
        Log.i("ACCESS_TOKEN", "Test");
        AuthenticationHandler authenticationHandler = new AuthenticationHandler() {
            Log.i("ACCESS_TOKEN", userSession.getIdToken().getJWTToken());
            ...
        }
    }

AnotherClass. java

public class TokenAuthenticator implements Authenticator {
    @Override
    public Request authenticate(Route route, Response response) {
        Log.i("Authenticate", "auth");
    AWSInitiator awsInitiator = new AWSInitiator(AppSetting.getInstance().getApplicationContext());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        awsInitiator.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    } else {
         awsInitiator.execute();
    }
return response.request().newBuilder()
                .header("Authorization", "Bearer " + AppSetting.getInstance().getSDKDataManager().getAccessToken())
                .build();
    }
}

Но журнал не отображается. Я делаю что-то не так в своем кодировании. Мне точно нужно, чтобы токен передавался в качестве заголовка при выполнении запроса POST к AWS серверу. Но он возвращает ноль, потому что doInBackground () не работает. Даже Log в классе TokenAuthenticator также не просыпается

1 Ответ

1 голос
/ 20 января 2020

Вы фактически не печатаете журнал внутри метода doInBackground. Вы пытаетесь напечатать его в методе обратного вызова, когда выборка токена завершена. Я предполагаю, что ваш обратный вызов никогда не вызывался, который фактически печатает журналы.

Log.i("ACCESS_TOKEN", userSession.getIdToken().getJWTToken());

Чтобы проверить, что я говорю, напечатайте добавьте новый оператор Log снаружи, и вы должны увидеть, как журналы печатаются в консоли. Что-то вроде:

Log.i("ACCESS_TOKEN", "Test logs");
...