<form id="s3k3o"></form>

    <button id="s3k3o"></button>

    1. <rp id="s3k3o"><ruby id="s3k3o"><input id="s3k3o"></input></ruby></rp><th id="s3k3o"><track id="s3k3o"><video id="s3k3o"></video></track></th>
    2. <li id="s3k3o"><tr id="s3k3o"><u id="s3k3o"></u></tr></li>

    3. 當前位置: 網站首頁  >> 知識庫  >> Android  >> 查看詳情

      瓶頸總結

      發布時間:2019-04-10 14:20:29  瀏覽次數:1354 
      對于IT專業的學生來說,開學后就要面對各大IT企業的秋招,很多人會成為從0開始的Android實習生。在Android初學之路上,每個Android實習生都會遇到各式各樣的瓶頸。
       
           Android布局和屏幕適配


       Android初學者遇到的第一個瓶頸就是Android 布局的編寫。首先Android的layout是用XML寫的,而大多數大學生在大學階段學習網頁制作,都是用HTML繪制基本控件,然后用CSS進行頁面美化;而Android卻用XML繪制界面,style也是用XML寫。學習XML最重要的熟能生巧,多練習練習就順手了,另外XML和HTML有很多相似的地方,比如padding與margin的區別都是一樣的。
       

      此外Android系統碎片化嚴重,不同型號的手機有著不同的屏幕尺寸和不同的分辨率。為了解決這個問題,我們可以把背景貼圖做成.9png格式,并且用內容和padding撐起控件。如果需要適配的機型實在太極端,我們可以百分比布局解決這個問題——PercentRelativeLayout和PercentFrameLayout等。

       
      不同組件的生命周期
       
       Android初學者遇到的第二個瓶頸就是生命周期,Android的生命周期主要有Activity生命周期、Fragment生命周期、Service生命周期三種。學不好Activity的生命周期,你做不好界面跳轉的特效,也做不好系統Activity(相機等)的回調;學不好Fragment的生命周期,你寫不出惰性加載;學不好Service的生命周期,你連后臺運行都做不到。學習生命周期,要記住“文無圖時少直觀,圖無文時難入微”,用圖表輔助記憶。

       
      網絡請求和json解析

       Android是移動互聯網的重要組成部分,網絡請求和Json解析是Android學習中的重要環節,很多初學者會在此處遭遇瓶頸。


      為了突破這個瓶頸,初學者應該先選擇合適的框架以盡快解決實習工作中的問題。常用的網絡請求框架有Volley和OKHttp等;常見的json解析框架有Gson和Jackson等,如果你的求職目標是阿里巴巴集團,學習一下FastJson是可以助你一臂之力的;此外還有把網絡請求和json解析整合到一起的Retrofit。


       實習生初入企業,要記住用工作時間解決工作中的問題,知識的探索和能力的提升要利用自己的業余時間。下班后要學習以上框架的源碼和實現原理,比如Android的網絡請求必須在子線程中進行,否則會造成NetworkOnMainThreadException;現在的網絡請求都是基于HttpURLConnection的,任何大談HttpClient的資料都是過時的;還要弄清楚Handler的原理、ThreadPool的原理、AsyncTask的原理等;json解析方面的知識還有JSONObject和JSONArray的區別、Java的泛型機制、Java的反射機制等等。

       
      圖片加載和內存優化

       Android機的價位一般比iPhone低得多,所以Android系統比iOS系統更容易遇到內存溢出問題(OutOfMemoryError,簡稱:OOM),這也是初學者常見的學習瓶頸之一。OOM最多發于圖片,其次布局中嵌入的地圖、視頻等吃內存大戶也是OOM的罪魁禍首之一。

       解決加載圖片的OOM應該先選擇Picasso、Glide、Fresco等框架以盡快解決工作中的問題,然后利用個人時間學習Android緩存機制——LruCache和DiskLruCache;地圖、視頻的OOM應該在界面被回收時清除控件、停止服務;其他的OOM應該用弱引用和軟引用解決。

       
      RecyclerView

       Android最常用也是最復雜的控件是RecyclerView(2014及以前的資料是ListView),因為滑動沖突、列表中數據修改等問題都會在RecyclerView中體現。為了克服這些瓶頸,必須要搞清楚RecyclerView.Adapter(也包括以前的BaseAdapter)的工作原理,ViewHolder的工作原理,以及ViewGroup的事件分發機制等內容,這些內容不下大力氣學習是不能完全掌握的。


      克服了以上瓶頸后,估計實習生也該到了畢業轉正的時間了,進階路上還有新的瓶頸。新瓶頸有新的玩法:這種玩法需要雙手操作,如果用另一只手按住打開著的瓶口擼瓶頸,你可以一邊擼一邊使勁搖,玩HIGH的時候突然松開按住瓶口的手。

       
      自定義控件

      Android自帶的控件不能滿足太復雜的界面控件需求,因此繪制自定義控件也是Android工程師的必備技能。繪制自定義控件需要掌握View的幾個常見方法的重寫,如onDraw()、onMeasure()、onLayout()等;對事件分發機制的了解也應該比RecyclerView更精熟;此外還需要掌握Canvas和Animator的相關知識,Android的Canvas和HTML5的Canvas有很多相似性,可以以此突破Canvas的學習瓶頸。

       
      進程間通信

      不同App之間以及同一個App的不同進程之間需要多進程通信,多進程通信在視頻播放等占用大量資源的場合是很有必要的。進程間通信的初學者百度“多進程”會被AIDL繞得云里霧里,其實你只要試試Messenger框架,一切進程間通信的難題都會迎刃而解。

       
      Android性能全面優化和crash分析

      Android初學者會遇到的最后一個瓶頸是Android性能全面優化。前面提到的Android內存優化是Android性能優化中最重要的部分,但也只是一小部分,Android性能優化還包括安裝包體量優化、GUI繪制優化、電量和流量優化等。


      GUI方面可以利用ViewStub和去掉其他不必要的背景來避免OverDraw;安裝包體積可以用壓縮圖片、去除重復且無用的依賴等方式進行優化;電量和流量可以通過用推送代替輪詢、用GZIP文件格式下載過長的數據流等方式進行優化。

       
      在移動應用性能方面,崩潰(Crash)帶來的影響是最為嚴重的,Crash指App在運行過程中出現大段用戶正在進行的操作的強制關閉現象。Crash會造成關鍵業務中斷、產品口碑變差、用戶流失等問題。Crash可以用UncaughtExceptionHandler捕捉,也可以利用UMeng和Bugly等服務分析,請注意:如果打算跳槽到阿里,就用UMeng,想要跳槽到騰訊,就用Bugly。


      突破了上述所有瓶頸以后,Android程序員的技術水平都可以達到獨當一面的程度,甩掉了初學者帽子的程序員會發現頭頂不再是瓶頸,而是從技術到管理的天花板。

         
      聯系我們
      在線咨詢 QQ客服 0731-88362910
      地址:湖南省長沙市雷鋒大道1389號
      如有問題,可在線提交表單
        <form id="s3k3o"></form>

        <button id="s3k3o"></button>

        1. <rp id="s3k3o"><ruby id="s3k3o"><input id="s3k3o"></input></ruby></rp><th id="s3k3o"><track id="s3k3o"><video id="s3k3o"></video></track></th>
        2. <li id="s3k3o"><tr id="s3k3o"><u id="s3k3o"></u></tr></li>

        3. 国产欧美日韩综合在线成_狼友av永久网站免费观看武_久久久国产精品免费a片_亚洲av无码一区东京热