AsyncTask doInBackground方法未调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AsyncTask doInBackground方法未调用相关的知识,希望对你有一定的参考价值。

我正在AsynTask类的doInBackground方法中使用cognitouserpool代码。但是我的方法不是调用。我已经尝试通过使用Log检查它。它不起作用。

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.......
    AuthenticationHandler authenticationHandler = new AuthenticationHandler() {
        Log.i("ACCESS_TOKEN", userSession.getIdToken().getJWTToken());
        ...
    }
}

AnotherClass.java

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();
}

但是日志未显示。我在编码中做错什么了吗?在对AWS服务器进行POST调用时,我确实需要令牌作为标头传递。但它返回null,因为doInBackground()无法正常工作

答案

您实际上并没有在doInBackground方法中打印日志。您正在尝试在令牌提取完成后以回调方法打印它。我假设您的回调从未被调用过,实际上是在打印日志。

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

为了验证我在说什么print,请在外部添加新的Log语句,您应该看到日志已在控制台中打印。像:

Log.i("ACCESS_TOKEN", "Test logs");
另一答案

您没有调用execute()方法。

AWSInitiator awsInitiator =

新的AWSInitiator(AppSetting.getInstance()。getApplicationContext())。execute();

以上是关于AsyncTask doInBackground方法未调用的主要内容,如果未能解决你的问题,请参考以下文章

AsyncTask:doInBackground() 的返回值去哪了?

无法让 doInBackground 在 AsyncTask 中工作

如何使 AsyncTask“doInBackground()”等待一个数组列表

如何在 doInBackground 的 AsyncTask 中显示 toast

AsyncTask doInBackground方法未调用

即使使用取消方法也无法取消 AsyncTask 中的 doInBackground 进程