痛點
我們團隊在整個開發過程中, 會有幾個很噁心的痛點, 代碼不能不寫, 但是寫了有噁心. 所以在組件化過程中, 發現這些是可以被解決的的.
於是 Component
從最早的設計上就考慮了一些痛點
- 你有沒有因爲在
Adater
或者Dialog
或者其他沒有Activity
的地方需要startActivityForResult
. 痛點解決方式,0入侵 - 你有沒有因爲進入一些界面有前置條件而寫一些噁心代碼. 比如 A 界面需要定位成功才能進去. 你可能有以下兩種方式去解決. 痛點解決:Component 頁面攔截器
- 你不得不在任何一個跳轉到 A 界面的地方去判斷當前是否定位成功, 處理完畢之後再跳轉. 這種方式噁心至極, 每次都要寫一些固定代碼
- 在目標界面去處理定位的事情. 這個方式相對來說比較好, 但是它畢竟已經進入了 A 界面, A 界面需要額外考慮這些, 並且還可能要展示定位失敗的視圖等等
- 你使用
ARouter
的 extra 做, 這個是一一種方式, 但是有兩個問題:ARouter
的路由攔截器設計在子線程, 而定位這些漫長的, 通常你希望彈個框卡住用戶操作, 你會發現寫起來賊噁心.Component
設計在主線程的, 但是整個跳轉是"異步的"
ARouter
的每個攔截器都是全局攔截器, 你每多一個這種攔截器, 都會加長整個路由的流程
- 整合
RxJava
,Component
本身完美支持RxJava
, 這樣子你的跳轉就可以嵌入你任何一個其他RxJava
流程中去了. 不會像之前一樣整個流程被打斷 - 你以爲你寫的界面, 你可以路由到就已經 ok 了嗎? 其實不然, 每一個你寫的界面、系統界面、第三方界面都應該是一個可路由的目標, 其他框架不能給任意一個界面標記路由. 這個也是一個痛點. 解決方案
- 比如撥打電話界面, 是需要申請權限才能進入的. 如果你能給撥打界面標記一個路由, 並且結合上面的頁面攔截器. 你會發現這件事做起來舒服至極!
- 比如拍照界面, 需要申請相機權限. 同樣可以這麼處理.
- 當然了, 適用於任何一個你覺得可以標記的界面. 並結合頁面攔截器會有奇效!
- 有些界面參數較多, 跳轉入口也較多, 你會發現維護這些跳轉的參數其實會比較頭疼. 這時候你可以使用 類似
Retrofit
接口編程式跳轉