Я не могу придумать, как подождать, пока появится объект. Я пишу приложение для камеры. Сделав снимок, я записываю данные GPS в теги exif. Я должен дождаться появления объекта местоположения перед записью. Мое быстрое и грязное исправление, чтобы начать новую нить и использовать время цикл «ждать» для объекта:Android: Ждите появления объекта
private static class MyRunnable implements Runnable {
private final String imagePath;
private final String thumbPath;
MyRunnable(final String anImagePath, String aThumbPath) {
this.imagePath = anImagePath;
this.thumbPath = aThumbPath;
}
public void run() {
while (mCurrentLocation == null) {
//do nothing
}
try {
writeExifTags(imagePath);
writeExifTags(thumbPath);
}
catch (NullPointerException e) {
Log.i(TAG, "NullPointerException");
}
}
}
Это работает, но пустой, а контур выглядит очень некрасиво. Я думаю о каком-то обработчике объекта, но не могу придумать способ использования обработчиков для проверки существования mCurrentLocation. Кто-нибудь со вспышкой остроумия? :) (Да, блок try/catch теперь устарел ^^)
ну, я мог бы. Но я не имею никакого преимущества перед моим текущим Методом. У меня главный вопрос: как периодически проверять, чтобы объект был нулевым. Преимуществом может быть сон/ожидание во время цикла ... – Redfox
Я вижу. Как насчет использования обработчиков, как вы сказали, и использовать назначение методов, поскольку они только способ изменения mCurrentLocation. Когда вы используете метод, чтобы присвоить ему null-огонь событие handle. – AedonEtLIRA
Я реализовал AsyncTask для проблемы. Код выглядит более чистым (хотя он делает то же самое). Моя мотивация немного ниже, чтобы разобраться в обработчиках, поскольку проблема уже решена. Я добавил «Thread.sleep (1);» к циклу while. Это кажется приемлемым для меня. Спасибо, тем не менее, за вашу помощь. :) – Redfox