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

Facebook移動架構(gòu):Android Flux架構(gòu)詳解

開發(fā) 架構(gòu)
要為Android應(yīng)用找到一個好的架構(gòu)不是一件容易的事情。谷歌似乎不太在乎這個事情,因此在設(shè)計模式上,除了Activity 生命周期管理之外,再也沒有官方的推薦。

要為Android應(yīng)用找到一個好的架構(gòu)不是一件容易的事情。谷歌似乎不太在乎這個事情,因此在設(shè)計模式上,除了Activity 生命周期管理之外,再也沒有官方的推薦。

但是,為你的應(yīng)用打造一個架構(gòu)是非常重要的。不管你是否喜歡,任何應(yīng)用最終都會有一個架構(gòu)。因此你***是成為一個架構(gòu)的奠基人,而不是等著它出現(xiàn)。

今天: Clean Architecture

目前的趨勢是采用Uncle Bob在2012年對web應(yīng)用提出的建議: Clean Architecture

但是我發(fā)現(xiàn)Clean Architecture對于絕大多數(shù)安卓應(yīng)用來說都有點過度設(shè)計了。

通常移動應(yīng)用要比web應(yīng)用的生命短。移動端技術(shù)的發(fā)展太快,以至于今天發(fā)行的app可能在一年后已經(jīng)完全過時。

移動應(yīng)用所做的事情很少。絕大多數(shù)的用例都只是數(shù)據(jù)信息流的消費。從API獲取數(shù)據(jù),顯示數(shù)據(jù)給用戶,很少有輸入與寫入。

所以它的業(yè)務(wù)邏輯并不復(fù)雜。至少不如后端一樣的復(fù)雜。雖然你要處理很多平臺上的問題:內(nèi)存,存儲,暫停,恢復(fù),網(wǎng)絡(luò),定位等等,但是這些都不是業(yè)務(wù)邏輯。所有app都有這些東西。

因此,絕大多數(shù)app似乎都無法從類似于復(fù)雜的分層或者工作執(zhí)行優(yōu)先級隊列中獲益。

他們也許只是需要一種組織代碼的簡單方式,能高效的一起工作,更容易的發(fā)現(xiàn)bug。

Flux 架構(gòu)介紹

Flux 架構(gòu) 被Facebook使用來構(gòu)建他們的客戶端web應(yīng)用。跟Clean Architecture一樣,它不是為移動應(yīng)用設(shè)計的,但是它的特性和簡單可以讓我們很好的在安卓項目中采用。

安卓中的Flux架構(gòu)

要理解Flux,有兩個關(guān)鍵的特點

  • 數(shù)據(jù)流總是單向的一個單向的數(shù)據(jù)流 是 Flux 架構(gòu)的核心,也是它簡單易學(xué)的原因。就如下面討論的,在進行應(yīng)用測試的時候,它提供了非常大的幫助。

  • 應(yīng)用被分成三個主要部分:

    • View: 應(yīng)用的界面。這里創(chuàng)建響應(yīng)用戶操作的action。

    • Dispatcher: 中心樞紐,傳遞所有的action,負責把它們運達每個Store。

    • Store: 維護一個特定application domain的狀態(tài)。它們根據(jù)當前狀態(tài)響應(yīng)action,執(zhí)行業(yè)務(wù)邏輯,同時在完成的時候發(fā)出一個change事件。這個事件用于view更新其界面。

這三個部分都是通過Action來通信的:一個簡單的基本對象,以類型來區(qū)分,包含了和操作相關(guān)的數(shù)據(jù)。

Flux Android 架構(gòu)

在Android開發(fā)中使用Flux設(shè)計規(guī)范的目的是建立一個在簡單性與易擴展易測試之間都比較平衡的架構(gòu)。

***步是找到Flux元素和安卓app組件之間的映射。

其中兩個元素非常容易找到與實現(xiàn)。

  • View: Activity o或者Fragment

  • Dispatcher: 一個事件總線( event bus),在我的例子中將使用Otto,但是其它任何實現(xiàn)都應(yīng)該是ok的。

Actions

Actions也不復(fù)雜。它們的實現(xiàn)和POJO一樣簡單,有兩個主要屬性:

  • Type: 一個String,定義了事件的類型。

  • Data: 一個map,裝載了本次操作。

比如,一個顯示用戶詳情的典型action如下:

Bundle data = new Bundle(); 
data.put("USER_ID", id); 
Action action = new ViewAction("SHOW_USER", data);

Stores

這可能是Flux理論中最難的部分。

如果你之前使用過Clean Architecture,你可能難以接受。因為Stores承擔了原本被分成多層的責任Stores包含了application的狀態(tài)與它的業(yè)務(wù)邏輯。它們類似于rich data models但是可以管理多個對象的狀態(tài),而不僅僅是一個對象。

Stores響應(yīng)Dispatcher發(fā)出的Action,執(zhí)行業(yè)務(wù)邏輯并發(fā)送change事件。

Stores的唯一輸出是這單一的事件:change。其它對Store內(nèi)部狀態(tài)感興趣的組件必須監(jiān)聽這個事件,同時使用它獲取需要的數(shù)據(jù)。

系統(tǒng)中不再需要任何其它組建去了解application的任何狀態(tài)信息。

***,stores必須對外公開一個獲取application狀態(tài)的接口。這樣,view元素可以查詢Stores然后相應(yīng)的更新UI。

安卓中的Flux架構(gòu)

比如,在一個Pub Discovery App 中,SearchStore被用來跟蹤被搜索的item,搜索結(jié)果以及搜索歷史。在同一個應(yīng)用中,一個ReviewedStore同樣包含了瀏覽pub的列表以及必要的邏輯比如根據(jù)review排序。

但是有一個重要的概念需要記住:Stores并不是倉庫。它們的職責不是從一個外部源(API或者數(shù)據(jù)庫)獲取數(shù)據(jù),而是跟蹤actions提供的數(shù)據(jù)。

那么,F(xiàn)lux application是如何獲得數(shù)據(jù)的呢?

網(wǎng)絡(luò)請求與異步調(diào)用

在***幅Flux示意圖中我有意跳過了一部分:網(wǎng)絡(luò)調(diào)用。接下來的示意圖完善***幅圖并添加了更多細節(jié):

安卓中的Flux架構(gòu)

異步網(wǎng)絡(luò)調(diào)用是被一個Actions Creator觸發(fā)的。一個Network 適配器完成相應(yīng)API的異步調(diào)用并且返回結(jié)果給Actions Creator。

最終Actions Creator分發(fā)帶有返回數(shù)據(jù)的相應(yīng)類型的Action。

把所有網(wǎng)絡(luò)工作和異步工作獨立于Stores之外有兩個主要的優(yōu)點:

  • 你的Stores是完全同步的:這讓Store中的邏輯更容易跟蹤。Bug也更容易跟蹤。同時,因為所有的狀態(tài)變化都是同步的,那么Store的測試變會的非常簡單:啟動actions然后等待期望的結(jié)果。

  • 所有的action都是從一個Action Creator觸發(fā)的:在一處單一的點創(chuàng)建與發(fā)起所有用戶操作可以大大簡化尋找錯誤的過程。忘掉在多個類中尋找某個操作的源頭吧 ,所有的事情都是在這里發(fā)生的。同時,因為異步調(diào)用發(fā)生在這之前,所有來自于ActionCreator的東西都是同步的。這大大提高了代碼的可跟蹤與可 測試性。

演示代碼:To-Do應(yīng)用

在這個例子中,你將看到一個使用Flux架構(gòu)的典型的To-Do應(yīng)用。

我讓項目盡量簡單,只演示這個架構(gòu)如何能夠產(chǎn)生組織良好的app。

對于實現(xiàn)的一些評價:

  • Dispatcher的實現(xiàn)是通過Otto Bus。但是幾乎任何bus都是可以的。Flux架構(gòu)本身在事件上有一定限制,我在這里沒有采用。原本Flux的定義中,前一個事件沒有完成之前就開始分發(fā)下一個事件是不允許的,會拋出一個異常。為了讓項目簡單,我沒有采用。

  • 有一個ActionsCreator類幫助創(chuàng)建Action,并把它們post給Dispatcher。這在Flux中時相當普遍的模式,可以讓事情變的有序。

  • Actions類型只是String常量。也許這不是***的實現(xiàn),但是它快速并且有助于事情的簡單化。

同樣的還有Actions數(shù)據(jù):它們只是以String類型為key,Object為值的HashMap。這會導(dǎo)致Stores中轉(zhuǎn)換成實際數(shù)據(jù)的時候發(fā)生丑陋的類型轉(zhuǎn)換。而且顯然這也不是類型安全的,但這也是為了讓我們的例子更好理解。

總結(jié)

在安卓應(yīng)用中其實不存在***架構(gòu)的說法。不過存在適合你當前app的***架構(gòu)。這個架構(gòu)可以讓你和團隊其他成員協(xié)作起來更輕松,按時完成項目,盡可能的保持高質(zhì)量與較少的bug。

我相信Flux對于以上提到的特點都有很好的支持。

源碼

https://github.com/lgvalle/android-flux-todo-app

擴展閱讀:

感謝

特別感謝我們的同事Michele Bertoli 花時間向我介紹Flux與校對這篇文章。

責任編輯:王雪燕 來源: jcodecraeer
相關(guān)推薦

2016-08-31 09:58:55

JavascriptFlux架構(gòu)

2011-04-26 09:18:53

FacebookPHPmysql

2012-05-03 11:07:37

Facebook

2009-05-13 09:10:59

Facebook存儲基礎(chǔ)架構(gòu)照片應(yīng)用程序

2013-01-09 09:33:33

WLANWi-Fi移動通信

2010-07-26 13:44:49

Facebook移動應(yīng)用軟件

2017-02-27 09:36:01

AndroidMVVM架構(gòu)

2012-05-16 09:59:30

OpenStack架構(gòu)

2012-10-08 10:08:45

移動WebFacebookAndroid

2011-12-01 14:32:13

Facebook數(shù)據(jù)中基礎(chǔ)架構(gòu)

2010-11-05 13:44:55

移動支付平臺Facebook

2013-09-03 10:10:00

人人網(wǎng)移動開發(fā)架構(gòu)

2013-09-03 10:22:02

人人網(wǎng)移動開發(fā)架構(gòu)

2017-07-17 15:19:10

MVVM模式iOS開發(fā)MVP

2011-10-10 09:11:09

Java

2024-07-31 08:33:17

2011-05-12 10:59:50

Facebook移動設(shè)備

2013-04-11 10:23:07

2009-03-24 08:44:40

GoogleAndroid移動OS

2010-11-29 09:46:35

Dalvik系統(tǒng)架構(gòu)Android
點贊
收藏

51CTO技術(shù)棧公眾號

日韩手机在线观看| 欧美 日韩 国产一区| 国产原创中文av| 香蕉久久网站| 日韩欧美一级在线播放| 日本免费a视频| 人妻一区二区三区免费| 六月天综合网| 日韩中文第一页| 女同性αv亚洲女同志| 日本三级在线视频| 国产高清不卡一区二区| 高清亚洲成在人网站天堂| 久久中文字幕一区| 男女高潮又爽又黄又无遮挡| 手机看片一区二区| 久久午夜精品一区二区| 亚洲激情第一页| 任你操这里只有精品| 九义人在线观看完整免费版电视剧| 青青草国产成人av片免费| 欧美精品情趣视频| 三级网站在线免费观看| 不卡的国产精品| 五月综合激情日本mⅴ| 日本午夜精品一区二区三区| 99久久精品国产一区色 | 欧洲高清一区二区| 夜夜狠狠擅视频| 精品电影一区| 中文字幕欧美精品在线 | 国产精品一区二区黑丝| 欧美一区第一页| 欧美大片xxxx| 中文字幕亚洲影视| 欧美一级日韩免费不卡| 欧美亚洲日本在线观看| 精品精品导航| 国产精品每日更新在线播放网址| 久久99精品久久久久子伦| 亚洲精品成人电影| 国产传媒日韩欧美成人| 91在线观看免费高清完整版在线观看| 亚洲男人天堂网址| 久久精品亚洲| 日本高清不卡在线| 四虎成人永久免费视频| 国产日本精品| 18久久久久久| 久热这里只有精品6| 在线精品在线| 91国内产香蕉| 免费在线不卡视频| 亚洲一区二区网站| 欧洲日韩成人av| www.欧美三级电影.com| 永久免费黄色片| 亚洲日日夜夜| 26uuu亚洲综合色欧美| 欧美大片在线观看| 中文字幕第80页| 免费福利视频一区二区三区| 一本一道波多野结衣一区二区| 俄罗斯av网站| 成人午夜视屏| 欧美怡红院视频| 五月婷婷六月合| 巨大黑人极品videos精品| 欧美日本国产一区| 日本女人性视频| 91久久精品无嫩草影院| 亚洲精品电影在线观看| 美女又爽又黄视频毛茸茸| 久久最新网址| 久久精品电影网| 九九九在线视频| 夜夜嗨一区二区三区| 91精品国产成人www| 日日摸天天添天天添破| 黄色视屏网站在线免费观看| 激情丁香综合五月| 国产精品18毛片一区二区| 在线观看xxx| 国产日产欧美一区二区三区| 最新不卡av| heyzo中文字幕在线| 色视频一区二区| 午夜剧场高清版免费观看| 91精品久久久久久综合五月天| 国产视频亚洲视频| 国产三级精品三级观看| 欧美日韩一区自拍| 国产va免费精品高清在线| 中日韩av在线| 国产98色在线|日韩| 欧美日韩亚洲免费| 国产在线高清理伦片a| 亚洲第一精品在线| 久久国产乱子伦免费精品| 日韩黄色三级| 亚洲高清久久网| 羞羞在线观看视频| 99精品免费视频| 国产精品视频一区二区高潮| 可以免费观看的毛片| 欧美国产激情一区二区三区蜜月| 永久免费看av| 亚洲天堂一区二区| 精品sm捆绑视频| 国产精品久久久久久网站| 国产夫妻性生活视频| 国产视频一区在线观看| 国产亚洲黄色片| 成人综合日日夜夜| 亚洲偷欧美偷国内偷| av资源吧首页| 国产一区 二区 三区一级| 日韩亚洲不卡在线| 日本不卡1234视频| 精品国内二区三区| 日本中文在线视频| 青青草97国产精品免费观看| 久久精品国产一区二区三区不卡| av片哪里在线观看| 欧美无人高清视频在线观看| 亚洲久久久久久| 黑丝一区二区三区| 91午夜理伦私人影院| 国产精品影院在线| 色综合久久综合网97色综合| 亚洲少妇中文字幕| 欧美日韩免费| 亚洲一区二区三区成人在线视频精品| 国产中文字幕在线视频| 欧美日韩精品中文字幕| 久久久久久婷婷| 红桃视频国产一区| 亚洲综合中文字幕在线| 日本高清在线观看wwwww色| 欧美伊人精品成人久久综合97| 亚洲国产精品成人综合久久久| 伊人成人网在线看| 国产精品免费一区二区三区在线观看 | 中文字幕伦理片| 久久精品30| 欧美大陆一区二区| gay欧美网站| 亚洲另类图片色| 色一情一乱一伦| 91免费观看在线| 97成人在线观看视频| 女同另类激情重口| 91国产精品电影| 亚洲天堂av一区二区| 精品视频在线一区| 久久国产天堂福利天堂| a天堂在线观看视频| 亚洲一二三区不卡| 久久久久9999| 狂野欧美性猛交xxxx巴西| 欧美一级日本a级v片| 欧美日韩免费观看视频| 一本久久综合亚洲鲁鲁| 91久久国语露脸精品国产高跟| 国产精品欧美一区喷水| 一二三级黄色片| 精品av久久久久电影| 国内一区在线| 久久99久久99精品免观看软件| 一区二区国产精品视频| 97免费观看视频| 一区二区成人在线观看| 亚洲少妇一区二区三区| 亚洲欧美日本视频在线观看| 日韩精品极品视频在线观看免费| 成人免费一区| 九九精品视频在线| 神马久久精品| 欧洲一区二区三区在线| 最新av电影网站| 成人国产精品免费网站| 黄色av免费在线播放| 中文字幕免费一区二区| 国产在线一区二区三区播放| 91精品美女| 欧美激情久久久久| 你懂的在线播放| 欧美一区二区三区电影| 可以免费在线观看的av| 亚洲少妇中出一区| 一起草在线视频| 蜜臀久久久久久久| 2022中文字幕| 国产亚洲电影| 亚洲www在线| 四虎4545www国产精品| 欧美久久精品一级黑人c片| 天堂a中文在线| 欧美一区二区三区播放老司机| 91午夜视频在线观看| 亚洲欧美影音先锋| 91精品人妻一区二区| 国产成人免费在线视频| 福利在线一区二区三区| 国产欧美精品| 国产内射老熟女aaaa| 国产黄色一区二区| 亚洲欧美色图小说| 精品人妻无码一区二区三区换脸| 国产精品一二二区| 色多多视频在线播放| 国产欧美短视频| 17c丨国产丨精品视频| 日韩欧美高清| 久久精品国产精品青草色艺 | 日韩特级毛片| 中文字幕日韩高清| 欧美视频免费一区二区三区| 日韩美一区二区三区| 怡春院在线视频| 91国偷自产一区二区三区观看 | 午夜在线精品偷拍| 欧美黄网在线观看| 99久久婷婷| 日本三级中国三级99人妇网站| 卡通动漫国产精品| 国产精品一区二区免费| 久久久久久爱| 亚洲精品免费一区二区三区| 成人免费一区| 国产精品免费福利| 在线成人视屏| 日av在线播放中文不卡| 国产亚洲成av人片在线观看| 久久久久久12| 成人超碰在线| 久久久女人电视剧免费播放下载| 50度灰在线| 美女999久久久精品视频 | 97成人精品区在线播放| 亚洲国产高清在线| 浮妇高潮喷白浆视频| 女同性一区二区三区人了人一| 亚洲精美视频| 久久国产亚洲精品| 在线天堂一区av电影| 日产午夜精品一线二线三线| 日本一区二区三区视频免费看| 亚洲综合小说图片| 日本一区视频在线| 清纯唯美综合亚洲| 亚洲一区二区三区色| 午夜精品毛片| 欧美另类videosbestsex日本| 中文字幕免费一区二区| 很污的网站在线观看| 一区二区国产精品| 国产精品亚洲αv天堂无码| 久久精品主播| 亚洲欧美在线精品| 国产伦精品一区二区三区视频青涩| 亚洲一区二区福利视频| 国产大片一区二区| 老熟妇精品一区二区三区| 91麻豆精品在线观看| 人妻视频一区二区| 国产三级一区二区三区| 久久精品国产精品国产精品污| 97一区二区国产好的精华液| 国产一区二区高清视频| 欧美激情在线免费| 亚洲一区三区视频在线观看| 亚洲国产精品久久久久蝴蝶传媒| 狠狠精品干练久久久无码中文字幕| 国产女人18水真多18精品一级做 | 国产在线免费看| 亚洲免费在线观看视频| 国产在线观看免费视频今夜| 狠狠综合久久av一区二区小说 | 视频精品一区二区| 日本激情综合网| 国产精品白丝jk黑袜喷水| 中文字幕在线国产| 国产亚洲精品福利| 男的操女的网站| 黄色成人av在线| 中文字幕乱码在线观看| 日韩欧美国产三级| 九色视频在线播放| 欧美成人在线免费视频| 亚洲精品**中文毛片| 国产综合久久久久| 美女视频亚洲色图| 在线免费观看成人网| 一区在线视频观看| 香港日本韩国三级网站| 成人国产精品免费观看动漫| 日韩免费成人av| 亚洲成人免费观看| 国产又粗又猛又爽又黄91| 精品欧美乱码久久久久久| jizz日韩| 91精品国产高清久久久久久91| 日韩成人在线电影| 久久偷看各类wc女厕嘘嘘偷窃 | 大j8黑人w巨大888a片| 久久99精品久久久久久动态图| 久久午夜夜伦鲁鲁片| 亚洲欧美日韩一区| 免费一级a毛片| 亚洲精品国产品国语在线| 成人在线app| 国产精品美女www| 台湾色综合娱乐中文网| 97久久国产亚洲精品超碰热| 日韩高清在线一区| 国产国语性生话播放| 亚洲精品一二三四区| 一级特黄aa大片| 中文字幕日韩高清| 亚洲伦理影院| 欧美二区在线| 国产精品久久久久久久免费软件| 国产一级二级av| 综合久久国产九一剧情麻豆| 影音先锋黄色网址| 亚洲天堂色网站| 波多野结衣久久精品| 国产私拍一区| 国产欧美三级| 日本护士做爰视频| 五月综合激情婷婷六月色窝| 男人的天堂a在线| 九色精品美女在线| 欧一区二区三区| 色乱码一区二区三区熟女| 久久99精品久久久久久国产越南 | 无码国产精品一区二区高潮| 中文字幕一区二区三区精华液| 亚洲视屏在线观看| 伊人成人开心激情综合网| gogo亚洲高清大胆美女人体 | 色哟哟无码精品一区二区三区| 亚洲精品中文在线| 亚洲精品国产suv一区| 久久久999国产精品| 日韩成人综合网| 在线观看三级网站| 国产**成人网毛片九色| 精品少妇一二三区| 欧美精品一区二区在线播放 | 日本不卡免费一区| 成人av一级片| 91热门视频在线观看| 黄瓜视频在线免费观看| 精品视频www| 日韩精品麻豆| 精品少妇人妻av一区二区| 国产精品一二三四| 国产又大又黑又粗免费视频| 精品一区二区电影| 欧美va视频| 国产又爽又黄ai换脸| 东方aⅴ免费观看久久av| 日韩毛片在线视频| 亚洲色图狂野欧美| 老司机精品视频网| 黄色网在线视频| 91丨porny丨国产入口| 怡红院男人的天堂| 欧美美女18p| 亚洲精华一区二区三区| 亚洲天堂网一区| 尤物在线观看一区| 人妻va精品va欧美va| 国产成人精品在线视频| 影音先锋日韩精品| 国产精品无码一区二区三区免费| 欧美曰成人黄网| 日韩精品卡一| 日本电影一区二区三区| 国产一区二区影院| 欧美一级片免费在线观看| 色老头一区二区三区在线观看| 视频在线观看免费影院欧美meiju| 999在线观看视频| 亚洲国产精品成人久久综合一区 | 亚洲视频精品在线| vam成人资源在线观看| 尤物av无码色av无码| 国产精品久久久一本精品| 成人午夜视频一区二区播放| 国产精品69精品一区二区三区| 欧美天堂亚洲电影院在线观看| 国产成人av一区二区三区不卡| 日韩亚洲欧美一区| 国产成人77亚洲精品www| 精品国偷自产一区二区三区| 国产精品麻豆网站| 神马久久精品|