Amplify Android - клиент отправил последующий вызов `Amplify.configure` после того, как первый уже завершился успешно - PullRequest
1 голос
/ 16 марта 2020

Я создал функцию для загрузки изображения в AWS S3 bucket, функция вызывается при нажатии кнопки. Это работает для первого экземпляра после новой сборки Gradle, но когда я пытаюсь вызвать функцию снова, я получаю следующую ошибку:

E/StorageQuickstart: The client issued a subsequent call to `Amplify.configure` after the first had already succeeded.
btnSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Upload to AWS S3
                File imageFile = new File(imgFilePath);
                uploadImage(imageFile.getName(), imgFilePath);
                finish();
            }
        });

Функция

// AWS Amplify
    private void uploadImage(String imageName, String imageAbsolutePath) {

        // Amplify Initialize
        AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
            @Override
            public void onResult(UserStateDetails userStateDetails) {
                try {
                    Amplify.addPlugin(new AWSS3StoragePlugin());
                    Amplify.configure(getApplicationContext());
                    Log.i("StorageQuickstart", "Amplify Initialized");
                    Amplify.Storage.uploadFile(
                            imageName,
                            imageAbsolutePath,
                            new ResultListener<StorageUploadFileResult>() {
                                @Override
                                public void onResult(StorageUploadFileResult result) {
                                    Log.i("StorageQuickStart", "Successfully uploaded: " + result.getKey());
                                    Log.i("ImageURL", getS3ObjectUrl(imageName));
                                }

                                @Override
                                public void onError(Throwable error) {
                                    Log.e("StorageQuickstart", "Upload error.", error);
                                }
                            }
                    );

                } catch (Exception e) {
                    Log.e("StorageQuickstart", e.getMessage());
                }
            }

            @Override
            public void onError(Exception e) {
                Log.e("StorageQuickstart", "Initialization error.", e);
            }
        });

    }

1 Ответ

0 голосов
/ 03 апреля 2020

Это связано с тем, что метод AWSMobileClient.getInstance (). Initialize () вызывается при каждом нажатии кнопки. Принимая во внимание, что инициализация должна быть сделана только один раз. Таким образом, вы можете вызвать метод AWSMobileClient.getInstance (). Initialize () либо в Launcher Activity, либо использовать его в классе Application, как упомянуто в разделе initialize Amplify в docs

.
...