Я не могу придумать, как правильно ждать появления объекта. Я пишу приложение для камеры. После съемки я записываю данные GPS в теги exif. Я должен подождать, пока не появится объект местоположения, прежде чем писать. Мое быстрое и грязное исправление состоит в том, чтобы начать новый поток и использовать цикл while для «ожидания» объекта:
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");
}
}
}
Это работает, но пустой цикл while выглядит очень некрасиво. Я думаю о каком-то обработчике для объекта, но не могу придумать, как использовать обработчики для проверки существования mCurrentLocation. Кто-нибудь со вспышкой ума? :) (Да, блок try / catch теперь устарел ^^)