Как узнать, когда закончится обновление базы данных после MediaScanner? - PullRequest
0 голосов
/ 22 ноября 2011

Я работал над приложением, которое включает в себя использование камеры устройства.После того, как я беру изображение и сохраняю его на SD-карте, я хочу получить его миниатюру через базу данных мультимедиа Android.Итак, я должен запустить MediaScanner, чтобы система могла узнать мой образ, что я и сделал.

Но после MediaScannerConnectionClient окончательного сканирования, которое можно узнать здесь

        @Override
        public void onScanCompleted(String path, Uri uri) {

            if (mediaScanConn.isConnected()) {
                mediaScanConn.disconnect();

            }
        }`

Похоже, что обновление базы данных не завершается правильно, на моем телефоне требуется около 800 мсек, чтобы завершить процесс. Как я могу узнать, когда база данных закончила обновление?Пожалуйста, помогите мне, будет лучше, если вы опубликуете свой код. Большое спасибо!

1 Ответ

1 голос
/ 19 января 2012

Даже если вставка информации об изображении в базу данных уже завершена (то же самое с каталогом сканирования), вы все равно не можете гарантировать, что создание эскиза также завершено.Создание миниатюр фактически выполняется в другом потоке, потому что иногда требуется некоторое время для извлечения / декодирования миниатюры из файла, особенно для видеофайлов.

Когда я проверил исходный код приложения камеры Android, кажется, что он не ждет миниатюры, сгенерированной при вставке информации о содержимом в базу данных, вместо этого они генерируют миниатюры внутри приложения.Это связано с тем, что если пользователь делает снимок, когда MediaScanner по-прежнему работает в фоновом режиме (сразу после загрузки или установки SD-карты), он будет помещен в конец очереди, а это означает, что для этого потребуется времяВаше изображение будет обработано.

...