Android
Bygga bakåtkompatibla appar
Sök…
Hur man hanterar avskrivna API
Det är osannolikt att en utvecklare inte stöter på ett avskrivet API under en utvecklingsprocess. Ett avskrivet programelement är ett som programmerare avskräckes från att använda, vanligtvis för att det är farligt eller för att ett bättre alternativ finns. Kompilatorer och analysatorer (som LINT ) varnar när ett avskrivet programelement används eller åsidosätts i icke-utskrivet kod.
Ett avskrivet API identifieras vanligtvis i Android Studio med hjälp av en strejk. I exemplet nedan .getColor(int id)
metoden .getColor(int id)
:
getResources().getColor(R.color.colorAccent));
Om möjligt uppmuntras utvecklare att använda alternativa API: er och element. Det är möjligt att kontrollera bakåtkompatibilitet för ett bibliotek genom att besöka Android-dokumentationen för biblioteket och kontrollera avsnittet "Tillagd i API-nivå x":
Om API: t du behöver använda inte är kompatibelt med Android-versionen som dina användare använder, bör du kontrollera om API-nivån för användaren innan du använder det biblioteket. Till exempel:
//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());
}
Genom att använda den här metoden ser du till att din app förblir kompatibel med nya Android-versioner såväl som befintliga versioner.
Enklare alternativ: Använd supportbiblioteket
Om supportbiblioteken används finns det ofta statiska hjälpmetoder för att utföra samma uppgift med mindre klientkod. I stället för if / else-blocket ovan, använd bara:
final int color = android.support.v4.content.ContextCompat
.getColor(context, R.color.colorPrimary);
De flesta avskrivna metoder som har nyare metoder med en annan signatur och många nya funktioner som kanske inte har kunnat användas i äldre versioner har hjälpmetoder som denna. För att hitta andra, bläddra igenom supportbiblioteket för klasser som ContextCompat
, ViewCompat
, etc.