В версии 1.0.15 существует фабричный метод fromCallable
, который позволяет запускать экземпляр Callable
для каждого подписчика, в который можно также добавить проверенные исключения:
Observable.fromCallable(() -> {
File photoFile = new File(App.getAppContext().getCacheDir(),
"userprofilepic_temp.jpg");
if (photoFile.isFile()) {
//delete the file if it exists otherwise the new file won't be created
photoFile.delete();
}
photoFile.createNewFile(); //saves the file in the cache dir
FileOutputStream fos = new FileOutputStream(photoFile);
photoBitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);//jpeg format
fos.close();
return photoFile;
})
.subscribe(...)
Редактировать:
source.flatMap(v -> {
try {
//...
return Observable.just(result);
} catch (Exception e) {
return Observable.error(e);
}
})
.subscribe(...);
Это обычные переменные, вам не нужно делать ничего особенного. Поэтому в заголовке напишите:
class nmea {
protected:
static rule<> start, address;
};
А в файле реализации:
rule<> nmea::start = ch_p('$');
rule<> nmea::address = ch_p('$');
// etc.
Хотя, я думаю, вам рекомендуется использовать переменные-члены.