Představujeme AsyncDisplayKit: Pro hladké a citlivé aplikace na iOS – Facebook Inženýrství

Už jste někdy všimli, aplikace koktání, jak budete procházet a přejeďte kolem? Poklepal na tlačítko a sledoval, jak celé rozhraní zamrzne, když se snaží reagovat? iOS je dobře známý pro svou lištu kvality uživatelského prostředí, ale splnění této lišty může být obtížné, zejména na starších iPhonech a iPadech. Leštěné aplikace obvykle používají po částech optimalizace výkonu, aby jejich rozhraní kapaliny, léčení různých zdrojů pomalost jako různé problémy. Dnes jsme open-sourcing AsyncDisplayKit, rámec, který nabízí holistický způsob, jak udržet vaše aplikace, hladký a citlivý.

V případě AsyncDisplayKit

iOS uživatelské rozhraní funkce — kreslení na obrazovku, reagovat na dotykové události, běh simulace fyziky pro inerciální posouvání, a tak dále — je bottlenecked tím, že hlavní vlákno. Aby aplikace udržovala zlatý standard 60 snímků za sekundu, může používat hlavní vlákno pouze po milisekundy najednou. Ale hlavní vlákno pouze UIKit pohledy jako UIImageView a UITextView může trvat desítky až stovky milisekund na velikost a zobrazit sami. A zatímco hlavní vlákno dekóduje obrázek nebo vykresluje text, nemůže reagovat na vstup uživatele nebo držet krok s posouváním.

Vzhledem k tomu, používat skladem UIKit názory může způsobit zpomalení, výkonný aplikace mají tendenci mít řešení pro jednotlivé UIKit komponenty. Místo toho, aby UIImageView dělal drahou práci sám, mohou ručně použít základní grafiku k dekomprimování JPEG a PNG na pozadí; místo použití UITextView mohou pracovat přímo s jádrem textu. Tento přístup je účinný — ale má svá omezení-jednotlivá řešení mají tendenci se chovat odlišně, což ztěžuje zdůvodnění zlepšení na vyšší úrovni a chování aplikací.

AsyncDisplayKit staví na UIKit A Core animace nabídnout obecné řešení. Jeho zobrazení obrázků a textu lze použít bez blokování hlavního vlákna, což nabízí řešení drop-in pro tento společný úkol. Ještě důležitější je, že podporuje asynchronně vytváření a Vykreslování komplexních hierarchií zobrazení stejným způsobem.

Představujeme uzel

AsyncDisplayKit uzel je thread-safe abstrakce nad UIView, který je v pořadí abstrakci nad CALayer:

Pokud víte, jak používat názory, víte, jak používat uzly. ASImageNode a Text Kit-poháněl ASTextNode lze použít stejně jako jejich protějšky UIKit. Na rozdíl od UIKit zobrazení hierarchie, uzel hierarchie pro celou obrazovkových stránek obsahu může být inicializován a stanovenými na pozadí vlákna a uzly, aby bylo snadné využít vícejádrových Procesorů ve všech současných zařízení se systémem iOS.

uzly mají mnoho výhod oproti zobrazení. Například můžete často zlepšit výkon nahrazením zobrazení vrstvami. Bohužel to vyžaduje zdlouhavý proces přenosu kódu založeného na pohledu na různé API a nevyhnutelně riskuje regrese. S uzly je to stejně snadné jako:

Pokud později potřebujete přepnout z vrstev zpět do zobrazení, je to změna jednoho řádku! To je transformační rozdíl. Místo toho, abyste byli opatrní s kódem uživatelského rozhraní podporovaným vrstvou, můžete jej použít ve výchozím nastavení, kdykoli nepotřebujete dotykové ovládání.

Začínáme

AsyncDisplayKit je robustní a připraven k použití ve vašich aplikacích. Původně jsme jej postavili tak, aby bylo možné vysoce hmatové uživatelské rozhraní papíru, a jde to ruku v ruce s motorem Pop animace, ale je to stejně silné s dynamikou UIKit a konvenčními návrhy aplikací. Nemůžeme se dočkat, až uvidíme, co s ním vytvoříte.

podívejte se na průvodce nebo nslondon talk se dozvědět více. Asyncdisplaykit je k dispozici na GitHub.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.