精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

了解拖慢移動應用的這三大原因,才好解決問題

譯文
移動開發(fā) Android
一般而言,軟件應用服務的緩慢主要表現在兩個方面:一個是加載頁面的滯留、或長時間等待UI(用戶界面)的建立;另一方面則與UX(用戶體驗)有關。在本文中,我將和您深入探討導致應用變慢的主要原因,以及如何通過跨平臺的應用框架來予以解決。

【51CTO.com快譯】一般而言,軟件應用服務的緩慢主要表現在兩個方面:一個是加載頁面的滯留、或長時間等待UI(用戶界面)的建立;另一方面則與UX(用戶體驗)有關,包括界面按鈕無法按照預期做出響應,或是用戶發(fā)現各種默認的手勢、動作及動畫無法生效。顯然,這兩者都會影響到用戶的使用體驗。在本文中,我將和您深入探討導致應用變慢的主要原因,以及如何通過跨平臺的應用框架來予以解決。

[[267502]]

跨平臺vs.原生

在日常研發(fā)過程中,人們經常會對跨平臺技術抱有成見。他們認為:由于并非原生,而是基于網絡,因此其整體效率會較為緩慢,當然也就注定會出錯。

但是,他們殊不知:如今,那些原生架構能夠實現的功能,跨平臺的應用框架基本都能實現,它們之間的運行效率通常取決于用戶是如何實現其程序代碼的。在實際項目中,我們經常會看到有的團隊使用Swift/Java,開發(fā)出了速度緩慢且時常崩潰的原生應用;而其他團隊則能夠使用Titanium之類的跨平臺技術,開發(fā)出了流暢的產品。

另外,無需用到混合式跨平臺工具,跨平臺的框架本身就能夠生成真正意義上的原生UI。因此,作為原生應用的開發(fā)人員,您過去遇到過的諸如內存泄漏等問題,在如今大多數跨平臺框架中已得到了***解決,而它們能夠協(xié)助開發(fā)人員實現了大部分的重量級加載任務。

可見,只有理解了您所使用的框架局限性,才是避免應用程序出現緩慢狀況的關鍵所在。下面,我將試著和您分析跨平臺應用在移動設備上運行緩慢、甚至無法響應的原因,并且?guī)椭业礁鞣N加速的辦法。作為代碼示例,我選用的是Titanium作為框架。當然,這些改進技巧也適用于其他類型的框架。

第1類原因:設計

通常情況下,在開發(fā)跨平臺的應用程序時,開發(fā)團隊往往趨向于將兩大平臺的版本合二為一。而這種設計理念恰恰是導致應用程序在長期運行后,變得緩慢的根本原因之一。

首先,您需要了解的是:不同平臺所對應的默認UI與UX(更為重要)是截然不同的。例如,iOS為每一個窗體“棧(stack)”都配置了打開/關閉動畫、以及幻燈片手勢。這些雖然看似微不足道,但是動畫的觸發(fā),能夠給用戶帶來交互式使用的體驗。這種“讓用戶通過在手機屏幕上滑動手指,在窗體棧中切換應用內與應用間不同頁面”的想法,緩沖了跳轉的時間。用戶不會直觀地體會到點擊后退按鈕所可能碰到的緩慢問題。

因此,在為某個窗體設計不同的外觀時,開發(fā)人員應酌情考慮是否采用原生的顯示效果。如果想自定義的話,那么開發(fā)人員就需要通過一個事件偵聽器,來捕捉用戶是否在屏幕上滑動了手指,進而關閉相應的窗體。否則,動畫手勢的突然消失,會讓用戶生硬地感覺到整個UX的下降,進而產生應用變慢的感受。

除了上述動畫效果與UI上的不同之外,開發(fā)人員還應當注意跨平臺框架的垃圾回收問題,以防止出現自定義UI在運行過程中出現內存泄漏的漏洞。

同時,隨著用戶的廣泛使用、以及移動設備硬件性能的提升,他們會設置更多的自定義手勢與快捷方式,而您的移動應用需要捕捉、跟蹤與計算更多的手指軌跡。因此,您會發(fā)現數據的加載與計算的阻塞會相互影響,并形成惡性循環(huán)。以至于某些應用在上線一年之后,就失去了可維護性與可使用性,而開發(fā)團隊則不得不對程序進行重寫與重構。

解決方案

首先,在應用的設計階段,我們應當充分了解與接受平臺之間的差異性。通過針對兩套系統(tǒng)的產品設計,來發(fā)現不同平臺的用戶對于界面與效果的期待。在公司內部,您可以邀請長期使用Android手機和iPhone的兩類人,進行各種使用效果的實測。

其次,利用內置的UX/UI特征,嘗試著從原生平臺的角度,實現應用界面上的各項功能。例如:在大多數iOS應用中,按鈕一般會被放置在標題的左右兩側;而Android版本則通常會把按鈕放置在右邊,或者直接隱藏到菜單圖標的里面。另外,Android應用會內置有后退按鈕,而iOS則會有一個返回的手勢。通過支持這些基于不同移動平臺的特征,用戶就能夠直觀地理解您的應用,并產生一定的認同感。

第2類原因:加載太多

應用程序變慢的另一個主要原因是:在UI中一次性加載的元素太多。畢竟,移動設備的性能不及用戶電腦,很難同時處理多項任務需求。而且,不是所有的人都能使用***版本的iPhone、以及高端Android設備。其中仍在使用Android 4.4的用戶也不在少數。因此,要想在各類應用商店里脫穎而出,您的移動產品就應該具備在低端配置和老舊版本的設備上仍有不俗性能的能力。

例如,在iOS的應用商店內,如果您點開并選中“Today”標簽的話,它會迅速地載入五款應用標簽。接著,您在向下滑動時,請注意滾動條的位置和大小。您會不難發(fā)現:滾動條會以原來的大小滑向屏幕的底部,當接近屏底的20%處時,它會迅速縮小、甚至彈回到上方的某個位置。而屏幕上則開始顯示“第二頁”的數據。

可見,該應用商店并非一次性加載了所有數據。因此,在實際應用的設計與構建中,我們應該捫心自問:我們在讓用戶***看到推送內容時,是否一并加載了后續(xù)內容?您是否針對圖片進行了延遲加載?在預加載的數據中,有多少應該在ListVIEW中就顯示出來?100項還是200項?在應用啟動之處,您需要調用多少個API?我在TiSlack論壇里,有看過“在APP的啟動時,如何最有效地調用50個API”的帖子,以及“如何在ListVIEW中有效加載10000條信息”的留言。

在此,我的答案是:“不要這樣做!”沒有人能夠一次性查看這么多條信息。如果您希望用戶能夠滾動列表的話,那么請使用延遲加載(lazy-loading)以及分頁,哪怕數據已存放在設備的本地空間里。另外,如果想讓用戶進行搜索的話?那么也請您在服務端本地搜索完畢之后,再推送到用戶設備上。

解決方案

從上面蘋果應用商店的例子,我們可以了解到:在應用被***打開之后,數據內容才被進行加載。例如在默認的TabGroup中:

...

另外,我在首頁選項卡的窗體中添加了一個postlayout事件偵聽器。該函數的作用是調用窗體的初始化器,在為選項卡獲取相關數據之后,再進行加載。通過等待postlayout事件,您可以確保用戶看到的不是加載頁面,而是正常的應用內容。下面便是用來滯后進行初始化內容的簡單函數--handlePostlayout:

  1. function handlePostlayout() { $.todayWindow.add( Alloy.createController('todayContent').getView() ); } 

如您所見,在Today標簽中,真實請求的內容、以及相關依賴項,并沒有馬上被初始化或加載,此舉無疑加快了應用程序的整體性能。

同時,對于其他選項卡而言,我們可以監(jiān)控屏幕窗體的“焦點(focus)”事件,只在窗體被聚焦時進行加載。同理,您也可以將該事件用在當前窗體被再次聚焦時,及時刷新數據;以及運用到Firebase Analytics(Android集成埋點分析)中。

記住:相對于那些用分頁或延遲加載的方式,來重新初始化整個頁面而言,僅下載數據的方式在量級上會更“輕”、速度會更快、也更節(jié)約CPU的計算力。

第3類原因:橋

此處的“橋”是一個源自Titanium和React Native之類跨平臺框架的概念。它表示:JavaScript代碼和原生代碼之間的每一次交互,都會產生開銷。例如:您在服務器進行API調用的時候,顯然,相對于花費100次調用API,而每次僅取回1條數據而言,我們更愿意僅調用1次API,并一次性地取回100條數據。

那么何為“過橋”呢?其實,我們在添加UI元素、更新UI元素、以及觸發(fā)動畫時都會產生調用。例如:在Titanium中的Ti.App.fireEvent流就需要用到過橋的概念。該類事件通常被用于在應用程序內觸發(fā)某些操作,進而實現初始化。另外,此類事件也會觸發(fā)UI的更新操作。因此,一個事件可能會觸發(fā)兩次過橋。

那么當所有的事情都同時發(fā)生,尤其處于循環(huán)觸發(fā)的狀態(tài)時,過橋進程就會變得“擁擠不堪”。而如果橋的帶寬容量又比較“狹窄”的話,您的應用就會產生大面積的延遲,甚至可能發(fā)生中斷事故,進而直接影響了用戶的使用體驗。

解決此類問題其實非常簡單。您只需要將UI的批處理組合在一起便可。因此,當需要修改ListTimes的整張表時,我們可以采用ListTeal.RePateTimeSt,來輕松地一次性重新插入整個數據集。而當您需要更改某個UI元素的一組屬性時,則完全可以使用applyProperties,而無需更改每個屬性的具體順序。

同時,您可以使用Backbone Events,來觸發(fā)整個應用程序中的各種事件,而不必采取過橋的方式。而且,我們很容易將當前的各種Ti.App事件遷移到Backbone Events上。

如下所示,我們首先將Backbone Events包括到alloy.js中。

  1. Alloy.Globals.events = _.clone(Backbone.Events); 

然后,您將應用里任何曾經用到了Ti.App.fireEvent()的地方,替換為如下函數:

  1. Alloy.Globals.events.trigger(); 

接著,以同樣的方式,您可以繼續(xù)將Ti.App.addEventListener()替換為:

  1. Alloy.Globals.events.on() 

您甚至可以對自己的項目進行全局搜索與替換,以獲得立竿見影的性能提高效果。

結論

綜上所述,拖慢移動應用的原因有許多種,其中大部分與低效的代碼實現方式有關。因此,我們應該盡量采用原生的UI組件,盡可能少地加載數據,同時減少過橋的數量。***,我再次重申:跨平臺框架并不會注定比原生應用要慢。事實上,在各種應用商店中,您會發(fā)現有95%到99%的應用(不包括游戲應用),都是采用Titanium之類的框架所構建的。

原文標題:3 Reasons Mobile Apps Can Be Slow,作者:Rene Pot

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:未麗燕 來源: 51CTO.com
相關推薦

2012-05-14 09:20:18

移動CRM

2017-12-12 13:35:59

Linux慕尼黑放棄原因

2021-03-12 10:22:58

數據庫DBaaS云計算

2025-04-18 00:30:00

數字化轉型

2010-11-09 10:54:47

SQL Server查

2015-04-22 15:21:05

軟件開發(fā)項目項目失敗

2018-02-25 22:59:48

蘋果5G技術5G設備

2011-05-27 11:28:58

Windows PhoWindows Pho微軟

2020-09-11 19:38:31

GitOps倉庫CI

2021-03-12 09:52:32

數據管理

2009-04-15 08:53:02

營銷專家孫路弘裁員

2020-12-09 20:54:09

Kubernetes容器開源

2023-09-01 13:35:30

2021-03-25 16:22:55

物聯(lián)網IoT

2020-06-17 07:00:00

Java數據科學家

2015-11-16 15:15:39

國產系統(tǒng)iOSAnroid

2016-12-19 08:05:57

VR國內蕭條

2015-12-31 14:06:55

UCloud

2013-07-01 10:33:41

Big DataBI大數據時代

2019-07-26 05:28:39

點贊
收藏

51CTO技術棧公眾號

欧美一区二区视频在线播放| 国产91亚洲精品| 韩国三级丰满少妇高潮| 久草视频这里只有精品| 色欲人妻综合网| 国产精品视屏| 欧美三级电影一区| 国产爆乳无码一区二区麻豆| 久草在线青青草| 国内精品视频666| 奇米一区二区三区四区久久| 精品国产视频一区二区三区| 美女毛片一区二区三区四区| 日韩三级在线观看| 成年人在线观看视频免费| 伊人精品影院| 国产精品女主播在线观看| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 精品999网站| 中文字幕在线日韩| 女尊高h男高潮呻吟| 久久免费精品| 欧美日韩一区精品| 欧美精品一区二区三区免费播放| 日韩激情av| 国产精品你懂的| 女同一区二区| 头脑特工队2免费完整版在线观看| 国产酒店精品激情| 国产在线精品播放| 国产主播第一页| 国产亚洲精品久久久久婷婷瑜伽| 久久夜色精品国产欧美乱| 娇妻被老王脔到高潮失禁视频| 久久香蕉网站| 精品卡一卡二卡三卡四在线| 少妇愉情理伦片bd| 午夜精品久久久久久毛片| 色天天综合久久久久综合片| 黄www在线观看| av资源在线播放| 亚洲午夜日本在线观看| 久久久久久久香蕉| 色屁屁www国产馆在线观看| 亚洲少妇30p| 欧美色另类天堂2015| 亚洲永久在线观看| 国产精品福利电影| 久久国产综合精品| 国产日本欧美一区二区三区在线| 日韩xxx视频| 老鸭窝一区二区久久精品| 国产精品欧美久久久| 中国女人真人一级毛片| 蜜桃久久久久久| 国产精品自产拍在线观看中文| 最近中文在线观看| 久久国产精品一区二区| 91九色视频导航| 精品国产九九九| 成人在线视频一区二区| 国产精品日本一区二区| 亚洲欧洲视频在线观看| 2023国产精品| 亚洲精品成人a8198a| 里番在线观看网站| 亚洲精品免费播放| av免费看网址| 韩国主播福利视频一区二区三区| 91久久一区二区| 福利片一区二区三区| 日韩精品一区二区三区中文字幕 | av网址在线播放| 亚洲美女屁股眼交3| h无码动漫在线观看| 亚洲午夜天堂| 欧美揉bbbbb揉bbbbb| 欧美激情第四页| 国产精品欧美大片| 亚洲视频网站在线观看| 欧美做爰爽爽爽爽爽爽| 亚洲国产精品第一区二区| 国产不卡在线观看| 国产露脸国语对白在线| a亚洲天堂av| 亚洲精品久久区二区三区蜜桃臀| a级毛片免费观看在线| 高跟丝袜欧美一区| 成年网站免费在线观看| 狠狠久久伊人| 色一区av在线| 黄网在线观看视频| 久久99国产乱子伦精品免费| 国产在线视频欧美一区二区三区| 超碰国产在线| 亚洲电影一区二区三区| 黄色片在线免费| 4438全国亚洲精品观看视频| 亚洲无亚洲人成网站77777| 欧美激情国产精品免费| 日本亚洲欧美天堂免费| 国产精品视频在线免费观看| 日本在线免费中文字幕| 精品久久久香蕉免费精品视频| 日本国产一级片| 一区二区三区视频免费观看| 久久综合电影一区| 免费观看日批视频| av一区二区三区黑人| 亚洲国产精品日韩| 久久影院午夜精品| 日韩一级黄色片| jizzjizzjizz国产| 久久狠狠婷婷| 国产精品麻豆免费版| 久草资源在线| 在线观看不卡一区| 少妇激情一区二区三区视频| 正在播放日韩欧美一页| 国产精品va在线播放| 亚洲国产欧美另类| 亚洲免费av网站| 天堂av在线网站| 久久99久久人婷婷精品综合| 97精品在线视频| 亚洲国产www| 亚洲欧美另类小说| 中文字幕66页| 婷婷综合社区| 成人午夜高潮视频| 欧美天天影院| 欧美日韩久久一区| 国产精品综合激情| 丝袜美腿成人在线| 久久精品日韩一区二区三区| 豆国产97在线| 中文字幕在线三区| 4438x成人网最大色成网站| 亚洲一二三精品| 日韩精品福利网| 欧美综合激情| 欧美日韩五码| 中文字幕亚洲欧美日韩2019| 羞羞色院91蜜桃| 中文无字幕一区二区三区 | 国产精彩视频在线观看| 国产成人在线视频网站| 免费极品av一视觉盛宴| 88久久精品| 高清视频欧美一级| 天天干,夜夜爽| 色综合久久综合网97色综合| 久久久久亚洲av无码专区桃色| 亚洲在线观看| 欧洲精品在线一区| 欧美a视频在线| 久久久91精品国产| 国产强被迫伦姧在线观看无码| 亚洲美女视频一区| 性色av蜜臀av浪潮av老女人| 亚洲自拍另类| 亚洲国产精品www| 麻豆精品在线| 国模吧一区二区| 最新精品视频| 人妖欧美1区| 亚洲国产成人精品久久久国产成人一区 | 有坂深雪av一区二区精品| 2025中文字幕| 国产伦理一区| 亚洲一区影院| 91九色鹿精品国产综合久久香蕉| 隔壁老王国产在线精品| 精品影院一区| 91精品福利在线一区二区三区| 久久精品99国产精| 久久先锋影音av| 不卡中文字幕在线观看| 亚洲国产综合在线看不卡| 欧美日韩在线播放一区二区| 国产激情精品一区二区三区| 69久久夜色精品国产69| 91看片在线观看| 日韩精品专区在线影院观看| 精品人妻一区二区色欲产成人| 国产精品传媒入口麻豆| caopor在线| 日本不卡的三区四区五区| 欧美交换配乱吟粗大25p| 亚洲丝袜啪啪| 亚洲一区二区三区香蕉| www.成人爱| 亚洲精品成人| 91精品成人久久| 3p在线观看| 亚洲护士老师的毛茸茸最新章节| a片在线免费观看| 午夜精品久久久久久不卡8050| 网站永久看片免费| 久久综合成人精品亚洲另类欧美| 182午夜在线观看| 香蕉久久夜色精品国产| 午夜久久久久久久久久久| 国内精品久久久久久久久电影网| wwwxx欧美| 久久亚洲人体| 国产一区福利| 2019国产精品自在线拍国产不卡| 成年午夜在线| 亚洲国产精品久久久久久| 91女人18毛片水多国产| 欧美视频中文字幕在线| 久久精品波多野结衣| 国产精品久久久久影院亚瑟 | 亚洲国产一二三精品无码| 西野翔中文久久精品字幕| 91视频免费在线观看| 国产69精品久久久久9999人| 欧美壮男野外gaytube| 精品精品导航| 久热精品视频在线| 日韩理伦片在线| 亚洲欧美综合区自拍另类| 日本精品一二区| 看黄在线观看| 亚洲人在线观看| 日本中文字幕一区二区有码在线| 日韩色视频在线观看| 一区二区三区精| 欧美三级日本三级少妇99| 蜜臀尤物一区二区三区直播| 欧美日韩中文字幕在线视频| 国产网站在线看| 亚洲图片欧美色图| 久久综合久久鬼| 亚洲国产精品久久久久婷婷884| 欧美国产在线看| 亚洲精品综合在线| 一区二区在线观看免费视频| 亚洲精品免费电影| 免费三片在线播放| 亚洲国产精品一区二区www| 日本少妇裸体做爰| 午夜精品福利久久久| 国内免费精品视频| 日韩欧美在线一区| 久久久999久久久| 欧美日韩视频第一区| 亚洲在线免费观看视频| 欧美精品久久久久久久久老牛影院| 亚洲一区中文字幕在线| 在线成人免费观看| 国产精品久久久久久久一区二区 | 国产精品爽黄69| 大香煮伊手机一区| 亚洲午夜精品久久久久久app| 亚洲精品久久久久久久蜜桃臀| 精品91在线| 日韩精品视频久久| 日韩黄色一级片| 五月天丁香花婷婷| 国产成人精品免费看| 一区二区免费在线观看视频| 91麻豆精品一区二区三区| 国产成人福利在线| 一区精品在线播放| 国产中文字幕免费| 狠狠爱在线视频一区| 日韩精品在线一区二区三区| 欧美一区二区二区| 污污网站在线免费观看| 国产亚洲精品美女久久久| 国产一区久久精品| 91a在线视频| 久久99久久久精品欧美| 肥熟一91porny丨九色丨| 亚洲图片久久| 最新精品视频| 久久av一区| 免费黄频在线观看| 91一区二区在线| 永久免费看片直接| 五月激情丁香一区二区三区| 中文字幕网址在线| 亚洲精品一区二区在线观看| 国产在线一在线二| 欧美国产日韩中文字幕在线| 成人爽a毛片免费啪啪| 亚洲在线免费看| 你懂的在线看| 一级特黄大欧美久久久| 伊人中文字幕在线观看| 7777精品伊人久久久大香线蕉| 人妻妺妺窝人体色www聚色窝 | 91精品国产91久久久久久一区二区| 噜噜噜久久,亚洲精品国产品| 国产一区二区三区在线视频 | 国产精品精品| 成人免费毛片网| 国产精品中文字幕欧美| av电影网站在线观看| 亚洲综合图片区| 在线观看国产一区二区三区| 日韩精品日韩在线观看| 直接在线观看的三级网址| 国产精品丝袜白浆摸在线| 青草久久视频| 成年人网站国产| 男男成人高潮片免费网站| 波多野结衣一二三区| 亚洲日本在线a| 中文字幕在线视频第一页| 精品亚洲一区二区三区在线播放| 91黄色在线| 成人天堂噜噜噜| 你懂的av在线| 日本综合字幕| 成人av资源| 我不卡手机影院| 亚洲欧美综合一区二区| 日韩欧美123| 中文日本在线观看| 91精品国产91久久久久久吃药| 精品麻豆剧传媒av国产九九九| 日韩精品电影网站| 国产精品呻吟| 又黄又爽的网站| 亚洲成精国产精品女| 亚洲av综合色区无码一区爱av | 亚洲在线免费看| 欧美激情偷拍自拍| 五月婷婷狠狠操| 国产欧美日韩另类一区| 久久中文字幕免费| 亚洲乱码国产乱码精品精天堂| www在线观看黄色| 国产精品国产三级欧美二区| 亚洲小说欧美另类社区| 熟妇女人妻丰满少妇中文字幕| 亚洲欧美日韩小说| 国产又粗又黄又爽的视频| 精品国产依人香蕉在线精品| 久久婷婷国产麻豆91| 中文日韩在线| 秘密基地免费观看完整版中文 | 国产精品久久久久久久久图文区| 婷婷激情五月综合| 亚洲天堂av在线免费| 日韩欧美少妇| 亚洲国产一区二区精品视频 | xxxwww国产| 精品国产乱码久久久久久天美 | 国产亚洲制服色| 波多野结衣人妻| 日韩一区二区三区国产| 国产电影一区二区| 久草免费福利在线| 成人av电影在线| 天天操天天摸天天干| 亚洲日本中文字幕免费在线不卡| 国产 日韩 欧美一区| 亚洲视频小说| 国产河南妇女毛片精品久久久| 欧美黑人一级片| 日韩大陆欧美高清视频区| 欧美成人资源| 一区二区三区精品国产| 国产精品一区二区久激情瑜伽| 久久精品女人毛片国产| 亚洲另类图片色| 少妇高潮一区二区三区99| av在线播放天堂| 久久久精品国产免费观看同学| 一本色道久久综合无码人妻| 欧美激情在线观看| 香蕉久久夜色精品国产使用方法| 91香蕉视频污版| 亚洲激情一二三区| 亚洲人午夜射精精品日韩| 国产精品午夜视频| 国产主播精品| 国产欧美小视频| 精品成人在线观看| 韩国成人在线| 免费特级黄色片| 国产精品午夜久久| 蜜臀久久99精品久久久| 国产精品入口夜色视频大尺度 | 亚洲国产精彩视频| 日本久久久久久| 欧美~级网站不卡| 久久国产柳州莫菁门| 日韩精品一区二区三区中文精品| 一区一区三区| www.男人天堂网| 中文字幕的久久| 天天摸夜夜添狠狠添婷婷| 成人信息集中地欧美| 久久久天天操| 国产精品二区一区二区aⅴ|