Как я могу узнать, записывается ли файл в данный момент? - PullRequest
1 голос
/ 22 сентября 2011

Я сохраняю довольно большое растровое изображение в фоновом потоке. Это займет около секунды. Основной поток попытается загрузить тот же файл на холст. Как я могу сказать основному потоку подождать, пока он не закончит сохранение?

Edit:

Я хотел знать, как проверить файл, а не как ждать; извините за недоразумение.

Объект растрового изображения был удален из памяти основного потока по разным причинам.

Есть ли стандартный способ проверить, используется ли файл, или мне просто использовать обходной путь?

Ответы [ 3 ]

6 голосов
/ 22 сентября 2011

Класс FileObserver идеально соответствует вашим потребностям. Вот документация . Его легко использовать. Когда наблюдаемый файл закрывается после записи, вызывается обратный вызов onEvent с параметром CLOSE_WRITE.

0 голосов
/ 22 сентября 2011

AsyncTask для Android подойдет для этой проблемы: http://developer.android.com/reference/android/os/AsyncTask.html

Вы можете обновить растровое изображение в doInBackground, а затем onPostExecute вы можете уведомить основной поток о его рисовании на холсте.

редактировать / что он сказал

0 голосов
/ 22 сентября 2011

Используйте AsyncTask для запуска фонового потока и обновления пользовательского интерфейса после завершения. Он был разработан специально для этой задачи.

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

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