如果你想使用 react-native 開發一款聊天應用,你很可能會了解或者使用 react-native-gifted-chat 這個庫,這是乙個很優秀的庫,使用靈活基本能夠滿足大部分開發者的 im 專案需求。
我的專案就使用這個庫,很不錯,基本能夠滿足了我所有的 im 需求。不過最近我也發現了一些問題,迫使我尋找替代方案。
事情的起因是:我的應用早期只有單聊功能,乙個會話顯示的訊息內容一般不會超過 100 條訊息,所以用 gifted chat 一直還不錯。但最近應用更新,新增了群聊功能後,我的使用者開始抱怨手機發燙厲害,直覺告訴我這是「訊息列表中的訊息數量太多」導致的(reactnative 在處理長列表問題一直有這個問題)。 於是我進行了測試,在應用中傳送 300~400 條**訊息,此時能夠感覺到應用有明顯的卡頓和自定義訊息無法及時渲染,並且手機開始發燙。我試圖優化處理這個問題,優化了很久但效果也不盡如人意。
我在網上搜尋了很久的解決方案,無意中在 facebook 群組 中看到有人推薦 aurora-imui-react-native 這個庫。這個庫也是乙個聊天 ui 庫。
我嘗試使用這個庫,測試該庫在顯示幾百條訊息時依然能夠流暢的執行,並且手機也沒有出現發燙的問題。以下我對兩個庫進行具體的比較。
我在 ios 平台下對兩個 demo 專案進行測試,分別測試了記憶體和能耗。
記憶體文字訊息測試: 分別傳送 100、200、300、400 條文本訊息,監測記憶體的使用情況。
下圖是 gifted-chat 的使用情況:
下圖是 aurora-imui 的使用情況:
兩個庫的記憶體使用都在 100mb 以內,且沒有出現卡頓渲染慢的情況,表現都不錯。
訊息測試: 分別傳送 100、200、300、400、500 條訊息,監測記憶體使用情況。
下圖是 gifted-chat 的使用情況:
下圖是 aurora-imui 的使用情況:
可以看到隨著的增加 gifted-chat 消耗的內存在不斷的增加,而 aurora-imui 在傳送500 張後,記憶體依然能夠保持在 33mb 左右。
能耗gifted-chat 大概傳送到 300 張的時候,能夠明顯感覺到手機在發燙,渲染速度跟不上。
不足當然 aurora-imui 也有它的問題,自定義 ui 能力有所欠缺,由於這個庫是使用原生**構建的 ui 模組,所以不能隨意在 js 端調整內部樣式,需要通過 aurora-imui 提供 props 來自定義樣式。
##小結
兩個庫應該如何抉擇
下面這種情況建議選擇 aurora-imui-react-native :
下面這種情況建議選擇 react-native-gifted-chat:
原文:how to build your chat ui
聊天介面實現
聊天介面是乙個listview,item是接受訊息介面和傳送訊息介面,list裡面的實體類有資訊內容和資訊型別 是傳送還是接收 adapter展示資料的時候,根據資訊型別隱藏或者顯示item的接受訊息介面或者傳送訊息介面。當傳送訊息的時候,list新增乙個實體類,adapter呼叫adapter.n...
簡單聊天介面
1.在main.storyboard中建立控制器和控制項,新增約束,設定textfield 如圖 2.為tableview在控制器上新增delegate datasource,為textfield新增delegate 3.在viewcontroller.m中新增 inte ce viewcontro...
聊天介面以及contextm
聊天介面,首先是布局,先用tools下的製作9patch的工具製作兩張對話方塊,分別用作接收訊息的背景和傳送訊息的背景。activity main.xml的布局檔案如下 顯而易見,利用listview來顯示傳送的和接收的訊息,既然有了listview,所以還應該有乙個listview的item布局,...