Согласно руководству по Android https://developer.android.com/studio/write/java8-support#supported_features, try-with-resources совместим со всеми уровнями API при использовании java 8.
В настоящее время я получаю исключение в этом коде:
try (final AssetFileDescriptor afd = context.getResources().openRawResourceFd(resId)) {
if (sample.load(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength())) {
if (!sample.isClosedSet()) sample.play(leftVolume, rightVolume, rate);
}
} catch (Exception e) {
e.printStackTrace();
}
Исключением является:
java.lang.IncompatibleClassChangeError: interface not implemented
at com.olekdia.supportsoundpool.SoundPoolCompat.$closeResource(SoundPoolCompat.java:260)
....
Это происходит на Andriod 4.2 (API 16), но оно работает, как и ожидалось, на более свежих Android.
Я такжеУ меня есть следующие строки:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Что с этим не так?