Najpierw założę, że Twoja minimalna wersja api jest niższa niż api, które zamierzasz wywołać, ponieważ to właśnie tam tego rodzaju adnotacje mają sens
@RequiresApi(Build.VERSION_CODES.N_MR1)
public void hello() {
Gdy metoda jest oznaczona tą adnotacją, za każdym razem, gdy wywołujesz tę metodę, otrzymasz ładne czerwone ostrzeżenie, że to wywołanie wymaga wersji API wyższej niż twoja minimalna wersja api, ale nie powstrzymuje cię to przed kompilacją i budowaniem apk, to po prostu ulegnie awarii na niższych wersjach Androida, gdy go testowałem.
@TargetApi
To wcale nie pomaga, pomija ostrzeżenia o wywołaniu nowego interfejsu API w twojej metodzie, ale kiedy wywołujesz tę metodę z innego miejsca, nie ma żadnego ostrzeżenia o kłaczkach i nadal możesz zbudować i zainstalować swój apk tylko po to, aby spotkać się z awaria, gdy ta metoda jest wywoływana.