Vissa människor gillar att kalla det fragmentering, andra kallar det val, men med alla namn finns det verkligen många olika Android-telefoner. Att bygga applikationer som behöver arbeta med dem alla är ingen enkel uppgift. Du har väldigt olika hårdvarukonfigurationer som gör en stor skillnad i prestanda, och även om en apk-fil kan fungera på var och en av dem, finns det fortfarande frågan om att en app ska fungera smidigt på avancerade enheter utan att offra funktioner på hög -änd enheter. När du pratar om en app som är så populär som Facebook kan det snabbt bli en mardröm för de som gör kodningen.
Facebook visade alla på Big Android Meat och hälsar en ny lösning som är enkel - Device Year Class-komponenten.
Facebooks utvecklare beskriver den här nya mjukvarukomponenten så här:
Device Year Class är ett Android-bibliotek som implementerar en enkel algoritm som kartlägger en enhets RAM, CPU-kärnor och klockhastighet till året där den kombinationen av specifikationer ansågs vara avancerad. Detta gör det möjligt för en utvecklare att enkelt ändra applikationsbeteende baserat på telefonens hårdvara.
Biblioteket förändrar inte något beteende i applikationen. Det returnerar ett värde (uttryckt som ett år) som lagras i koden i en tidpunkt då en utvecklare måste ändra hur en app fungerar för att skräddarsy upplevelsen till en viss typ av hårdvara. Detta innebär att en dev kan skriva en app med snygga animationer och övergångar som kommer att spela som avsedda när de körs på något liknande en Galaxy Note 4, men inte använda ögongodiset när appen körs på något som en Moto E. Som du kan föreställ dig, den här typen av kontroll på en app som Facebook - som är installerad på miljoner och miljoner olika telefoner - kan och kommer att göra en bättre upplevelse för nästan alla. Och det är lätt att implementera. Från dokumentationen på GitHub:
if (year >= 2013) { // Do advanced animation } else if (year > 2010) { // Do simple animation } else { // Phone too slow, don't do any animations }
Det bästa av allt är att biblioteket är öppet under BSD-programvarulicensen (samma licens som Google använder för Android-källan) och är tillgängligt för alla utvecklare gratis.
Vi vet att detta inte är magi, och det är troligt att de flesta utvecklare som arbetar med stora projekt har någon form av metod för att hantera olika hårdvarukonfigurationer. Vad enheten årsklass gör är att ge en enkel och "elegant" lösning på ett stort problem, och vem som helst kan använda den.
Enhetsårsklass 'GitHub-sida