Logo da.androidermagazine.com
Logo da.androidermagazine.com

Facebooks enkle trick til at servere så mange forskellige Android-enheder

Anonim

Nogle mennesker kan lide at kalde det fragmentering, andre kalder det valg, men med ethvert navn er der bestemt mange forskellige Android-telefoner. At opbygge applikationer, der har brug for at arbejde med dem alle, er ingen let opgave. Du har vildt forskellige hardwarekonfigurationer, der skaber en stor forskel i ydeevne, og selvom en apk-fil kan arbejde på hver enkelt af dem, er der stadig spørgsmålet om, at en app skal køre glat på low-end-enheder uden at ofre funktioner på høj -end enheder. Når du taler om en app, der er så populær som Facebook, kan dette hurtigt blive et mareridt for de mennesker, der laver kodningen.

Facebook viste alle på Big Android Meat og hilse på en ny løsning, der er enkel - enhedsklasse-komponenten.

Facebooks udviklere beskriver denne nye softwarekomponent sådan:

Enhedsårsklasse er et Android-bibliotek, der implementerer en simpel algoritme, der kortlægger en enheds RAM, CPU-kerner og urhastighed til det år, hvor denne kombination af specifikationer blev betragtet som high end. Dette gør det muligt for en udvikler at nemt ændre applikationsadfærd baseret på kapaciteten på telefonens hardware.

Biblioteket ændrer ingen opførsel i applikationen. Det returnerer en værdi (udtrykt som et år), der er gemt i koden i tidspunkter, hvor en udvikler har brug for at ændre den måde, en app fungerer på, for at skræddersy oplevelsen til en bestemt type hardware. Dette betyder, at en dev kan skrive en app med smarte animationer og overgange, der vil afspille som tilsigtet, når de kører på noget som en Galaxy Note 4, men ikke bruge øjen-slik når appen kører på noget som en Moto E. Som du kan forestil dig, at denne slags kontrol på en app som Facebook - som er installeret på millioner og millioner af forskellige telefoner - kan og vil give en bedre oplevelse for næsten alle. Og det er let at implementere. Fra 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 bedste af alt er, at biblioteket er åbent under BSD-softwarelicensen (den samme licens, som Google bruger til Android-kilden), og det er tilgængeligt for enhver udvikler gratis.

Vi ved, at dette ikke er magi, og det er sandsynligt, at de fleste udviklere, der arbejder på store projekter, har en slags metode til at håndtere forskellige hardwarekonfigurationer. Hvad enhedsklassen gør, er at give en enkel og "elegant" løsning på et stort problem, og enhver kan bruge det.

Enhedsårsklasse 'GitHub-side