Amazon web services 为什么在AsyncTask中引发NetworkOnMainThreadException?

Amazon web services 为什么在AsyncTask中引发NetworkOnMainThreadException?,amazon-web-services,android-asynctask,amazon-dynamodb,networkonmainthread,Amazon Web Services,Android Asynctask,Amazon Dynamodb,Networkonmainthread,各位。 我使用抽屉活动,使用片段更改内容,因此有PerfilFragment,例如: public class PerfilFragment extends Fragment { final CurrentView currentView = new CurrentView(); @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable Vi

各位。 我使用抽屉活动,使用片段更改内容,因此有PerfilFragment,例如:

public class PerfilFragment extends Fragment {

    final CurrentView currentView = new CurrentView();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_perfil, container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        if (getActivity() != null) {
            getActivity().setTitle(R.string.menu_perfil);

            final CognitoCachingCredentialsProvider credentialsProvider;

            if (getContext() != null) {
                AWSConfiguration awsConfig = new AWSConfiguration(getContext());
                credentialsProvider = new CognitoCachingCredentialsProvider(
                        getContext(),
                        awsConfig
                );

                currentView.setCredentialsProvider(credentialsProvider);
                currentView.setView(view);

                final FloatingActionButton fab = view.findViewById(R.id.fab);
                fab.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        new Insert().doInBackground(currentView);
                    }
                });
            }
        }
    }
}
CurrentView类型是一个内部类,也是一个插入类:

class当前视图{
私人CognitocachingCredentialsProviderCredentialsProvider;
私人视野;
CognitoCachingCredentialsProvider getCredentialsProvider(){
返回凭证提供者;
}
void setCredentialsProvider(CognitoCachingCredentialsProvider提供程序){
this.credentialsProvider=credentialsProvider;
}
查看getView(){
返回视图;
}
void setView(视图){
this.view=视图;
}
}
类插入扩展异步任务{
私有最终静态字符串TABLE=“perfil”;
@凌驾
受保护的表doInBackground(CurrentView…CurrentView){
AmazondynamodClient;
试一试{
dbClient=newamazondynamodbclient(currentView[0].getCredentialsProvider());
Table perfilTable=Table.loadTable(dbClient,Table);
Document perfilDocument=新文档();
final EditText perfilNome=currentView[0].getView().findViewById(R.id.perfil\u nome\u txt);
final EditText perfilDataNasc=currentView[0].getView().findViewById(R.id.perfil\u datanasc\u txt);
final EditText PerfilGrano=currentView[0].getView().findViewById(R.id.perfil\u Grano\u txt);
perfilDocument.put(“userId”,currentView[0]。getCredentialsProvider().GetCachedEntityId());
perfilDocument.put(“nome”,perfilNome.getText().toString());
perfilDocument.put(“datanasc”,perfilDataNasc.getText().toString());
perfilDocument.put(“慷慨”,perfildogro.getText().toString());
文档perfilInserido=perfilTable.putItem(perfilDocument);
if(perfilInserido.containsKey(“慷慨”)){
DynamoDBEntry perfilInseridoGenero=perfilInserido.get(“慷慨”);
if(perfilInseridoGenero!=null){
if(perfilSeridogenero.asString().equals(perfilGrando.getText().toString())){
小吃条
.制造(
currentView[0]。getView(),
“Perfil atualizado!”,
Snackbar.LENGTH\u LONG
)
.setAction(“Atualizar”,null)
.show();
}
}
}
返回性能;
}捕获(例外e){
Log.e(“异常”,e.getMessage(),e);
返回null;
}
}
}
异常在doInBackground方法内抛出,行为:
Table perfilTable=Table.loadTable(dbClient,Table)


我遗漏了什么?

AWS开发者论坛的用户awsvbk回答我:

您需要调用execute()方法,而不是doInBackground()方法。调用execute()将在后台线程中内部调用AsyncTask的doInBackground()方法

new Insert().execute(<PARAMS>)
new Insert().execute())
如果您仍然面临DynamoDB文档模型的任何其他问题 SDK,请在GitHub上为我们解决一个问题


AWS开发者论坛的用户awsvbk回答我:

您需要调用execute()方法,而不是doInBackground()方法。调用execute()将在后台线程中内部调用AsyncTask的doInBackground()方法

new Insert().execute(<PARAMS>)
new Insert().execute())
如果您仍然面临DynamoDB文档模型的任何其他问题 SDK,请在GitHub上为我们解决一个问题