Android получение изображений из указанной c папки с помощью AsyncTask, занимающее так много времени - PullRequest
0 голосов
/ 14 июля 2020

Здравствуйте, я получаю и отображаю изображения из указанной папки c в recyclerview, он работает нормально, но когда изображений становится больше, например, выше 50+, загрузка занимает так много времени, а затем появляется черный экран для некоторое время, а затем изображения отображались, мой вопрос: почему черный экран появляется какое-то время?

вот мой код

    private RecyclerView recyclerView;
private RestoredPhotosAdapter recoveredVideosAdapter;
private ProgressBar progressBar;
private ArrayList<File> fileList = new ArrayList<>();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_restored_images);

    progressBar = findViewById(R.id.progressBar);

    recyclerView = findViewById(R.id.recyclerViewAllCreatedVideos);

    recoveredVideosAdapter = new RestoredPhotosAdapter(fileList, getApplicationContext());

    GridLayoutManager gridLayoutManager = new GridLayoutManager(getApplicationContext(), 2, LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(gridLayoutManager);
    recyclerView.setAdapter(recoveredVideosAdapter);
    new MyTask().execute();

}

public class MyTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        progressBar.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackground(Void... voids) {
        String direc = AppConsts.PHOTOS_DIRECTORY;
        File directory = new File(direc);
        File[] files = directory.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                fileList.add(file);
            } else {
                boolean isPermission = false;

                for (int j = 0; j < fileList.size(); j++) {
                    if (fileList.get(j).getName().equals(file.getName())) {
                        isPermission = true;

                    } else {

                    }
                }
                if (isPermission) {
                    isPermission = false;
                } else {
                    fileList.add(file);
                }

            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {

    }

    @Override
    protected void onPostExecute(Void aVoid) {
        progressBar.setVisibility(View.GONE);

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...