android記憶體管理,Android-App的設計架構經驗談,Android知識總結
前言
筆者看了一些NDK的專案。一些教程不是HelloWord就是直接整FFmpeg或OpenCV,可謂一個天一個地,而且目錄結構和Android3.5的預設結構並不是太一致,一直沒找到什麼合心的文章。故寫此文連線這天地,來總結一下在NDK開發之前你應知道的東西。
在此之前,先劃分三類人,如果不認清自己是什麼角色就去玩NDK,你會很糟心:
user
: 純粹.so連結庫使用者(伸手黨)
creator
: 純粹ndk開發者,創作.so連結庫(創作家)
designer
: 在現有的.so上自己開發.so連結庫實現特定功能(程式設計師)
面試題如下(答案太長不方便展開,僅僅展示部分)
- Android屬性動畫實現原理;
- 補間動畫實現原理
- Android各個版本API的區別
- Requestlayout,onlayout,onDraw,DrawChild區別與聯絡
- invalidate和postInvalidate的區別及使用
- Activity-Window-View三者的差別
- 談談對Volley的理解
- 描述一次網路請求的流程
- HttpUrlConnection 和 okhttp關係
10.如何優化自定義View
1)在要在onDraw或是onLayout()中去建立物件,因為onDraw()方法可能會被頻繁呼叫,可以在view的建構函式中進行建立物件;
2)降低view的重新整理頻率,儘可能減少不必要的呼叫invalidate()方法。或是呼叫帶四種引數不同型別的invalidate(),而不是呼叫無參的方法。無參變數需要重新整理整個view,而帶引數的方法只需重新整理指定部分的view。在onDraw()方法中減少冗餘程式碼。
3)使用硬體加速,GPU硬體加速可以帶來效能增加。
4)狀態儲存與恢復,如果因記憶體不足,Activity置於後臺被殺重啟時,View應儘可能儲存自己屬性,可以重寫onSaveInstanceState和onRestoreInstanceState方法,狀態儲存。
11.低版本SDK如何實現高版本api?
使用@TargetApi註解·
當代碼中有比AndroidManifest中設定的android:minSdkVersion版本更高的方法,此時編譯器會提示警告,解決方法是在方法上加上@SuppressLint("NewApi")或者@TargetApi()。但它們僅是遮蔽了android lint錯誤,在方法中還要判斷版本做不同的操作。
@SuppressLint("NewApi")遮蔽一切新api中才能使用的方法報的android lint錯誤
@TargetApi() 只遮蔽某一新api中才能使用的方法報的android lint錯誤,如@TargetApi(11)如果在方法中用了只有API14才開始有的方法,還是會報錯。
面試經驗總結
1.一定要謹慎對待寫在簡歷上的東西,一定要對簡歷上的東西非常熟悉。因為一般情況下,面試官都是會根據你 的簡歷來問的;
2.能有一個上得了檯面的專案也非常重要,這很可能是面試官會大量發問的地方,所以在面試 之前好好回顧一下自己所做的專案;
3.和麵試官聊基礎知識比如設計模式的使用、多執行緒的使用等等,可以結合具體的專案場景或者是自己在平時是 如何使用的;
4.建議提前瞭解一下自己想要面試的公司的價值觀,判斷一下自己究竟是否適合這個公司。
5.另外,我個人覺得面試也像是一場全新的征程,失敗和勝利都是平常之事。所以,勸各位不要因為面試失敗而灰心、 喪失鬥志。也不要因為面試通過而沾沾自喜,等待你的將是更美好的未來,繼續加油!
文末
我總結了一些Android核心知識點,以及一些最新的大廠面試題、知識腦圖和視訊資料解析。
需要的小夥伴私信【學習】我免費分享給你,以後的路也希望我們能一起走下去。(謝謝大家一直以來的支援,需要的自己領取)
[點選這裡也可以領取哦!](https://shimo.im/docs/3dQqpTdrrVvtcjjx/ 《BAT、位元組各大廠面試真題集》,可複製連結後用石墨文件 App 或小程式開啟)
- 330頁PDF Android學習核心筆記(內含8大板塊)
- Android學習的系統對應視訊
- Android進階的系統對應學習資料
- Android BAT大廠面試題(有解析)