Szukaj…


Jak obsługiwać przestarzałe API

Jest mało prawdopodobne, aby deweloper nie natrafił na przestarzały interfejs API podczas procesu programowania. Przestarzały element programu to taki, którego odradza się programistom, zwykle dlatego, że jest niebezpieczny lub ponieważ istnieje lepsza alternatywa. Kompilatory i analizatory (takie jak LINT ) ostrzegają, gdy przestarzały element programu jest używany lub zastępowany w nieaktualnym kodzie.

Przestarzałe API jest zwykle identyfikowane w Android Studio za pomocą przekreślenia. W poniższym przykładzie metoda .getColor(int id) jest przestarzała:

getResources().getColor(R.color.colorAccent));

Jeśli to możliwe, programistów zachęca się do korzystania z alternatywnych interfejsów API i elementów. Możliwe jest sprawdzenie zgodności wstecznej biblioteki, odwiedzając jej bibliotekę dla systemu Android i zaznaczając sekcję „Dodano w interfejsie API poziomu x”:

getColor został dodany na poziomie API 1, a przestarzały na poziomie API 23

W przypadku, gdy interfejs API, którego należy użyć, nie jest zgodny z wersją Androida, z której korzystają użytkownicy, przed użyciem tej biblioteki należy sprawdzić poziom interfejsu API użytkownika. Na przykład:

//Checks the API level of the running device
if (Build.VERSION.SDK_INT < 23) {
    //use for backwards compatibility with API levels below 23
    int color = getResources().getColor(R.color.colorPrimary);
} else {
    int color = getResources().getColor(R.color.colorPrimary, getActivity().getTheme());
}

Zastosowanie tej metody gwarantuje, że Twoja aplikacja pozostanie kompatybilna z nowymi wersjami Androida oraz istniejącymi wersjami.

Łatwiejsza alternatywa: skorzystaj z biblioteki wsparcia

Jeśli używane są biblioteki wsparcia, często istnieją statyczne metody pomocnicze do wykonania tego samego zadania przy mniejszej liczbie kodu klienta. Zamiast powyższego bloku if / else użyj:

final int color = android.support.v4.content.ContextCompat
    .getColor(context, R.color.colorPrimary);

Większość przestarzałych metod, które mają nowsze metody z inną sygnaturą i wiele nowych funkcji, które mogły nie być możliwe do użycia w starszych wersjach, ma takie metody pomocnicze zgodności. Aby znaleźć innych, przejrzyj bibliotekę pomocy dla klas takich jak ContextCompat , ViewCompat itp.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow