妥妥的去面試之Android基礎(三)

2021-09-10 23:46:46 字數 2593 閱讀 4981

筆者由於在近期需要找工作,所以近期最主要的任務就是準備面試,不打無準備之仗。只有你準備充分了,那麼你想得到的機會才可能有機會入你懷中。

筆者會將準備面試的學習過程記錄下來,方便自己覆盤的同時也希望能給一道找工作的小夥伴們一些幫助。筆者準備的內容大綱如下

妥妥的去面試之android基礎(一)

妥妥的去面試之android基礎(二)

接下來開始本篇部落格的正菜:

1.耗時操作的優化

在oncreate方法裡做耗時的話會很容易引發卡頓甚至anr,所以耗時操作放在子執行緒中完成,使用多執行緒可以減少oncreate和onresume的時間,讓使用者盡快看到頁面。

2.布局檔案優化

3.檢視載入優化

最常見的就是我們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的時候才會設定,這樣亂序的問題也就不存在了。

建議與下列部落格共同食用

listview復用和優化詳解

android listview非同步載入亂序問題,原因分析及解決方案

fragment實現滑動可以借助viewpager。

了解viewpager+fragment的懶載入嗎?

viewpager為了讓滑動的時候防止出現卡頓現象,它的內部有乙個快取機制,預設情況下,viewpager會提前建立好當前fragment旁的兩個fragment。但是如果載入的資料比較耗時或者占用記憶體較大,就需要考慮是否實現懶載入來載入fragment。也就是說當我開啟某個fragment時才會去載入它。

建議與下列部落格共同食用 fragment懶載入和viewpager的坑

assets:不會在 r檔案中生成相應標記,存放到這裡的資源在打包時會打包到程式安裝包中。(通過 assetmanager 類訪問這些檔案)

res:會在r檔案中生成 id標記,資源在打包時如果使用到則打包到安裝包中,未用到不會打入安裝包中。

妥妥的去面試之Android基礎(四)

筆者由於在近期需要找工作,所以近期最主要的任務就是準備面試,不打無準備之仗。只有你準備充分了,那麼你想得到的機會才可能有機會入你懷中。筆者會將準備面試的學習過程記錄下來,方便自己覆盤的同時也希望能給一道找工作的小夥伴們一些幫助。筆者準備的內容大綱如下 妥妥的去面試之android基礎 一 妥妥的去面...

妥妥的去面試之資料結構與演算法(二)

筆者由於在找工作,所以近期最主要的任務就是準備面試,不打無準備之仗。只有你準備充分了,那麼你想要的機會才有機會入你懷中。筆者會將準備面試的學習過程記錄下來,方便自己覆盤的同時也希望能給一道找工作的小夥伴們一些幫助。筆者準備的內容大綱如下 android面試大綱.png 妥妥的去面試之資料結構與演算法...

妥妥的去面試之計算機網路

https簡單的說就是http的安全版。http協議傳輸的資料都是未加密的,也就是明文,這對於傳輸一些私密的資訊來說是不安全的,於是就出現了https,https是由ssl http協議構建的可進行加密傳輸 身份認證的網路協議,比http安全。它們的主要區別 簡單說一下https的工作流程?客戶端使...