<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                文檔當前狀態:**beta0.5** * [x] 選題收集:2017/11/25 * [x] 初稿整理: * [ ] 補充校對: * [ ] 入庫存檔: --- 這里主要會對ARouter路由使用過程中需要注意的地方進行梳理: #### 路由注解 * **不要使用手動分組** 在ARouter使用中,給目標路徑配置路由時,是下面這行代碼: ~~~ //默認分組 // 這里的路徑需要注意的是至少需要有兩級,/xx/xx @Route(path = "/test/activity") public class YourActivity extend Activity { ... } //主動分組 @Route(path = "/test/1", group = "app") // 構建標準的路由請求,并指定分組 ARouter.getInstance().build("/home/main", "ap").navigation(); ~~~ 文檔中還提到了 用戶主動分組的用法,但是在酷源碼的瀏覽中發現 主動分組的 方法已標注為 過時,建議使用默認分組。 ~~~ /** @deprecated */ @Deprecated public Postcard build(String path, String group) { return _ARouter.getInstance().build(path, group); } ~~~ * **分組策略** **硬性規定**:ARouter允許一個module中存在多個分組,但是不允許多個module中存在相同的分組,會導致映射文件沖突。 **優化建議** :根據路由表初始化策略,每個分組 僅在首次訪問時才會加載,為了避免加載過長,分組粒度 應該竟可能的小,每個分組10個左右為宜;[參考鏈接](https://github.com/alibaba/ARouter/issues/66) * **多個路由地址,跳轉同一個頁面** 暫時不能,后續也不會支持 @Route(path ) 多個路由地址,如果有類似的需求,可以使用PathReplaceService實現。 #### 跳轉 * **ARouter 如何去實現startActivityForResult的效果** 在多module的場景下,我們無法直接 過去其他module Activity的class,ARouter正是為此而生,你可以使用下面的方法 ~~~ //startActivity() ARouter.getInstance().build("/test/activity").navigation(); //startActivityForResult() ARouter.getInstance().build("").navigation(this,requestCode) ~~~ * **ARouter跳轉后finish當前頁面會有短暫的黑屏或白屏** **問題描述**:使用下面代碼進行跳轉時會有 黑屏或白屏 ~~~ ARouter.getInstance().build("/test/activity").navigation(); finish(); ~~~ **處理**:目前ARouter 跳轉Activity的時候現在是強制使用post(Runnable)方式,現在這種實現調navigation后立即調finish()關掉當前Activity會出現短暫白屏(白屏黑屏跟主題有關),需要設置一個NavigationCallback,在onArrival()回調中 finsih()。 ~~~ ARouter.getInstance().build("/test/1").navigation(this, new NavigationCallback() ~~~ * **LaunchMode不生效** **問題**:有幾個Activity設置了android:launchMode="singleTask"和android:launchMode="singleInstance",使用startActivity跳轉界面,設置能生效,但使用 ARouter.getInstance().build(path).navigation()設置卻無法生效。還是一直創建新界面,getTaskId()也一直是新的。AndroidManifest.xml里設置android:launchMode沒有生效。 **處理方案:** 查看navigation跳轉部分的源碼, ~~~ //代碼位置 _ARouter.class的_navigation方法 int flags = postcard.getFlags(); if (-1 != flags) { intent.setFlags(flags); } else if (!(currentContext instanceof Activity)) { // Non activity, need less one flag. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } ~~~ 從代碼段可以看出 如果你在跳轉activity的時候傳入當前activity對象,他就不會為intent設置Flag,因為arouter跳轉startActivity的時候不傳activity對象的話,默認使用的ApplicationContext,使用ApplictaionContext跳轉必須加上Intent.FLAG_ACTIVITY_NEW_TASK這個flag,從而導致了你說的問題。如果你想實現預期效果,要么使用navigation(activity),要么在build時候,手動setFlags()。 #### 未分類 * **app自定義WebVIewClient處理URL跳轉** **問題**:如果 WebView 設置了 WebViewClient, 發現 路由功能 不起作用了。 當然, 之所以設置WebViewClient,是為了 直接在APP 中的WebView 打開網頁,換言之,就是不啟動瀏覽器。然而 有些H5 需要打開原生界面,這該如何處理呢? **處理方案**:自己提供 webviewClient,要自己處理 schame 跳轉,拼裝 intent。 webview.setWebViewClient(new WebViewClient()); 需要自己在shouldOverrideUrl里面去處理自定義Schame,你直接就寫了一行new WebviewClient 肯定不行。 [參考鏈接1](https://github.com/alibaba/ARouter/issues/248) [參考鏈接2](https://github.com/alibaba/ARouter/issues/107) #### 傳遞值 * **Kotlin Autowired數值編譯不成功** Kotlin中的屬性 默認實現了get set方法,如果需要使用Autowired來實現注入,需要加上@jvmfield是可以編譯的 屬性如果多的話每個都需要加有點繁瑣 [參考鏈接](https://github.com/alibaba/ARouter/issues/243) * **傳遞自定義對象 或者集合 需要實現SerializationService 接口** 早期版本 默認使用FashJson,后來改成SerializationService,如果需要傳遞自定義對象,需要實現該接口 #### 暴露服務 * **不同Module中服務的相互調用** **問題**:現在有App,MoudleA、MoudleB ,采用ARouter 的方式暴露服務,但IAService、IBService 接口、以及實現類分別在MoudleA、MoudleB中,MoudleA 需要拿到IBService,ModuleB需要拿到IAService,但ModuleA和MoudleB是不能相互依賴的,所以相互調用的時候,如何才能編譯通過,獨立打包呢? **處理**:建議你每一個業務模塊單獨提供一個接口包,這個包中包含接口和傳遞數據的對象,這樣互相依賴接口包就行了。[參考鏈接](https://github.com/alibaba/ARouter/issues/90)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看