筆者因爲在近期須要找工做,因此近期最主要的任務就是準備面試,不打無準備之仗。只有你準備充分了,那麼你想獲得的機會纔可能有機會入你懷中。html
筆者會將準備面試的學習過程記錄下來,方便本身覆盤的同時也但願能給一道找工做的小夥伴們一些幫助。筆者準備的內容大綱以下面試
接下來開始本篇博客的正菜:多線程
1.耗時操做的優化併發
在onCreate方法裏作耗時的話會很容易引起卡頓甚至ANR,因此耗時操做放在子線程中完成,使用多線程能夠減小onCreate和onResume的時間,讓用戶儘快看到頁面。異步
2.佈局文件優化佈局
3.視圖加載優化post
最多見的就是咱們Fragment的懶加載,只有當它顯示的時候纔會去加載。性能
爲何ViewStub能夠提升加載性能?
ViewStub使用的是惰性加載的方式,即便將其放置於佈局文件中,若是沒有進行加載那就爲空,不像其它控件同樣只要佈局文件中聲明就會存在。
那ViewStub適用於什麼場景呢?
一般用於網絡請求頁面失敗的顯示。通常狀況下若要實現一個網絡請求失敗的頁面,咱們是否是使用兩個View呢,一個隱藏,一個顯示。試想一下,若是網絡情況良好,並不須要加載失敗頁面,可是此頁面確確實實已經加載完了,無非只是隱藏看不見而已。若是使用ViewStub,在須要的時候才進行加載,就達到節約內存提升性能的目的了。
ThradPoolExecutor線程池的執行任務的過程遵循什麼樣的規則?
知道哪幾種經常使用的線程池?
建議與Android開發藝術探索 P406 同時食用
ListView的複用機制是ListView爲了提升效率內部實現的一種優化,這種優化是經過複用itemview的方式實現的。
它是怎麼提升效率的呢?
對於一個Listview來講,每每有不少的itemview,若是每次在獲取itemview的時候都經過從新建立的方式去獲取勢必會影響效率,尤爲是在用戶頻繁滑動的狀況下。經過複用以前建立過的itemView就能夠避免重複建立,從而提高效率。
遇到過ListView異步加載圖片亂序的問題嗎?它的緣由是什麼?最後是怎麼解決的?
遇到過。把獲取到的圖片放於itemview中,而後不斷的滑動listview時,因爲listview的複用機制,它會把以前的view複用到滑動到的新的view上,這就會形成圖片錯位,同時它還在異步獲取新的圖片,這就會形成滑動時itemview上圖片的變換。
解決方法是使用findViewWithTag,因爲ListView中的ImageView控件都是重用的,移出屏幕的控件很快會被進入屏幕的圖片從新利用起來,那麼getView()方法就會再次獲得執行,而在getView()方法中會爲這個ImageView控件設置新的Tag,這樣老的Tag就會被覆蓋掉,因而這時再調用findVIewWithTag()方法並傳入老的Tag,就只能獲得null了,而咱們判斷只有ImageView不等於null的時候纔會設置圖片,這樣圖片亂序的問題也就不存在了。
建議與下列博客共同食用
Fragment實現滑動能夠藉助ViewPager。
瞭解ViewPager+Fragment的懶加載嗎?
ViewPager爲了讓滑動的時候防止出現卡頓現象,它的內部有一個緩存機制,默認狀況下,ViewPager會提早建立好當前Fragment旁的兩個Fragment。可是若是加載的數據比較耗時或者佔用內存較大,就須要考慮是否實現懶加載來加載fragment。也就是說當我打開某個Fragment時纔會去加載它。
建議與下列博客共同食用 Fragment懶加載和ViewPager的坑
assets:不會在 R文件中生成相應標記,存放到這裏的資源在打包時會打包到程序安裝包中。(經過 AssetManager 類訪問這些文件)
res:會在R文件中生成 id標記,資源在打包時若是使用到則打包到安裝包中,未用到不會打入安裝包中。