O ContentResolver não contém apenas a imagem criada em uma consulta imediata após a criação do arquivo

Estou usando esse código para copiar uma imagem usandodocumentFile.createFile()

private void newcopyFile(File fileInput, String outputParentPath,
                            String mimeType, String newFileName) {

        DocumentFile documentFileGoal = DocumentFile.fromTreeUri(this, treeUri);

        String[] parts = outputParentPath.split("\\/");
        for (int i = 3; i < parts.length; i++) {
            if (documentFileGoal != null) {
                documentFileGoal = documentFileGoal.findFile(parts[i]);
            }
        }
        if (documentFileGoal == null) {
            Toast.makeText(MainActivity.this, "Directory not found", Toast.LENGTH_SHORT).show();
            return;
        }

        DocumentFile documentFileNewFile = documentFileGoal.createFile(mimeType, newFileName);

        InputStream inputStream = null;
        OutputStream outputStream = null;
        try {
            outputStream = getContentResolver().openOutputStream(documentFileNewFile.getUri());
            inputStream = new FileInputStream(fileInput);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            if (outputStream != null) {
                byte[] buffer = new byte[1024];
                int read;
                if (inputStream != null) {
                    while ((read = inputStream.read(buffer)) != -1) {
                        outputStream.write(buffer, 0, read);
                    }
                }
                if (inputStream != null) {
                    inputStream.close();
                }
                inputStream = null;
                outputStream.flush();
                outputStream.close();
                outputStream = null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

E é assim que eu consultoContentResolver depois de criar a imagem, para atualizar imediatamente minha galeria de imagens com o resultado da consulta, que deve conter informações da imagem recém-criada.

cursorPhotos = MainActivity.this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    projectionsImages,
                    null,
                    null,
                    MediaStore.Images.Media.DATE_TAKEN + " DESC"
            );

Mas a consulta imediata não conseguiu encontrar a imagem recém-criada. E se eu executar a consulta novamente depois de um momento, a imagem recém-criada estará presente no resultado.

Parece que fornecer informações para a imagem recém-criada leva tempo paraContentResolver(se o ContentResolver for responsável por isso), pois ele seria executado em segundo plano enquanto eu executava a consulta imediata.

Existe algum método ou ouvinte para saber quando a imagem recém-criada é registrada peloContentResolver?

questionAnswers(2)

yourAnswerToTheQuestion