<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                #### 1.UI繪制 > 減少UI繪制時間; > 減少不必要的子控件或層級;UI的繪制流程:measure-layout-draw,measure與layout都需要for loop所有的子控件,匯集起來才能完成繪制,布局。所以子控件越多,所消耗的時間越長(inflate,layout_weight,relative,多層嵌套等),減少不必要的子控件或層級,是相當有必要的。 > 通過merge,viewstub這些標簽來減少層級嵌套; 對于ListView、GridView而言,復用item減少inflate次數,通過setTag,getTag的viewHolder方式實現復用(holder中的控件最好reset后再賦值,避免圖片文字錯亂); ViewPager同時緩存page數最好為最小值3,每個pager應該只在顯示時才加載網絡或數據庫(UserVisibleHint=true),最好不要預加載數據; 對于下載,要控制好下載的最大任務數(平均速度慢),同時給InputStream再包一層緩沖流會更快(如BufferedInputStream) 對于圖片,最好根據實際情況進行壓縮,同時考慮對圖片進行緩存(加載速度:內存>硬盤>網絡,合理使用內存緩存)。 #### 2.緩存 比方說,以前我們一直在用強引用,HashMap,后來我們發現占內存,我們就用軟引用,弱引用來及時回收,再后來因為回收機制不可控,所以又有了lrucache,disklrucache通過算法來平衡內存與硬盤緩存。隨著android版本的推進與演化,我們也應該擁抱變化。如果你的App里還有軟引用,弱引用的地方,不妨再check下。 比方說網絡+數據庫。網絡我們一般都是去主動獲取,而非被動接受。那如果說數據是重復的或者未更改的呢?那我們去取一次網絡數據有什么意義呢?我的解決方案是給每個activity或fragment或每個組件設置一個最大請求間隔,比如一個listview,第一次請求數據時,保存一份到數據庫,并記下時間戳,當下次重新初始化時,判斷是否超過最大時間間隔(如5分鐘),如果沒有,只加載數據庫數據,不需要再做網絡請求。當然,還有一些隱式的http請求框架會緩存服務器數據,在一定時間內不再請求網絡,或者當服務器返回304時將之前緩存的數據直接返回。 #### 3.網絡請求 合理的緩存,控制最大請求并發量,及時取消已失效的請求,過濾重復請求,timeout時間設置,請求優先級設置等。 #### 4.其它代碼規范 你要知道**for loop中不要聲明臨時變量**,不到萬不得已不要在里面寫try catch。 明白垃圾回收機制,**避免頻繁GC**,內存泄漏,OOM(有機會專門說) **合理使用數據類型**,比如StringBuilder代替String,(筆試題最常見的是str+="str"中有幾個對象) ,**少用枚舉enum,少用父類聲明(List,Map)** 如果你有頻繁的new線程,那最好通過**線程池去execute它們,減少線程創建開銷**。 你要知道單例的好處,并正確的使用它。 多用常量,少用顯式的"action_key",并維護一個常量類,別重復聲明這些常量。 如果可以,至少要弄懂設計模式中的策略模式,組合模式,裝飾模式,工廠模式,觀察者模式,這些能幫助你合理的解耦,即使需求頻繁變更,你也不用害怕牽一發而動全身。需求變更不可怕,可怕的是沒有在寫代碼之前做合理的設計。
                  <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>

                              哎呀哎呀视频在线观看