好久不見!在七月底辦理入職之后連著好幾周的培訓,這才開始步入正軌,打算以新的形式去記錄工作生活的所學所想,暫且想到下面幾個模塊,接下來就是作為正式鵝的第一個月總結啦!(之前簡書發表功能暫停了一段時間,所以現在才能發出來...)
┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅
???????厘米姑娘 de 加油站:不斷查缺補漏??
???????厘米姑娘 de 讀書角:繼續讀書之旅??
???????厘米姑娘 de 小心情:所見所聞所想??
???????厘米姑娘 de 照片冊:定格美好時刻??
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅
PART ONE——加油站
列一些知識點,主要還是通過鏈接形式拓展和補充~
1.BUG匯總:
- Android Studio在運行時顯示Please Select Android SDK的解決方法
- Gradle Permission denied解決方案
- Android-錯誤:任務執行失敗':app:transformClassesWithDexForRelease'該怎么解決?
- Android下打印出現read: Unexpected EOF!分析
2.Android應用的啟動方式:
- 冷啟動:后臺無該進程,系統會創建一個新進程分配給該應用,需要創建和初始化Application和MainActivity類。有關冷啟動的優化實例:Android App 啟動頁(Splash)黑/白閃屏現象產生原因與解決辦法
- 熱啟動:后臺有該進程,系統從已有的進程中來啟動應用,僅須要創建和初始化MainActivity。
3.分享一些大佬在編寫代碼總結的注意事項,對于還沒什么實戰經驗的小白很有用~
-
UI:
- 前后臺切換、橫豎屏切換時的邏輯是否正常,尤其UI有輪詢邏輯的
- 適配問題,比如劉海屏手機是否存在UI遮擋
- 切換中英文時注意外文是否能完整顯示
- 切圖資源的尺寸和大小問題
- .9圖拉升效果是否正常,包括padding區域
- 對齊類UI建議優先使用約束性布局,而不是多套一層Layout
- 開啟手機開發者權限,確認是否有過度繪制,是否有頻繁掉幀
- SurfaceView和TextureView不能混用重疊,會導致黑屏
-
動畫:
- 動畫執行時長是不可靠的,不要特別依賴
- 核心邏輯不要依賴System.currentTimeMills做時間判斷,是可能人為改變的
- 如果只是計算時間差值建議用SystemClock.elapsedRealtime()
- 復雜動畫建議用屬性動畫,用AnimatorSet的話可能會出現卡頓現象
-
Intent:
- 啟動第三方Activity,先判斷該Intent能否被解析或者加上try,否則可能出現ActivityNotFoundException
- 四大組件設置exported屬性為true時要考慮是否會引發安全性問題:被繞過驗證頁面?導致拒絕服務漏洞?
- Intent傳遞的數據過大會導致頁面跳轉過慢,建議用持久化形式
Looper:使用View.post()要注意View一旦沒有attached任務可能永遠不會執行
Debug:日志打印避免使用String.format(),建議直接使用+或append,性能有10倍的差異
線程:加鎖避免范圍過大、尤其注意臨界區代碼、復用線程池
-
進程:
- Application生命周期里的代碼,要考慮子進程是否需要執行
- 用AIDL最好加上oneway標識,用callback方式回調,防止進程間阻塞
- 善用RemoteCallbackList,防止注冊以后無法反注冊問題
- 基于Service的跨進程服務首次調用通常會失敗,可以考慮用任務緩存隊列或ContentProvider代替
- 不建議使用廣播做跨進程通信,全量發現少量Crash
-
清理:
- 頁面退出時:是否調用Handler.removeCallback來清空Handler里的消息?是否取消了還沒有完成的請求?在頁面里注冊的監聽是否反注冊?使用RxJava是否解除訂閱?
- 數據庫的游標是否已經關閉
- 打開的文件流是否關閉
- WebView使用后是否destroy
-
內存:
- 保存在內存中的圖片是否做過壓縮處理
- 是否頻繁的創建對象,必要時需要使用內存池做復用
- 內部類最好寫成static,避免引用外部類
- 成員變量持有Activity或Context必要時使用弱引用包裹
- 傳入Activity盡可能getApplicationContext
-
性能:
- 頻繁操作同一個文件或執行同一個數據庫操作,可以考慮把讀取結果緩存在內存中,以空間換時間
- 放在主頁面的控件,可以考慮優先用延遲加載來優化啟動速度
-
第三方:
- build.gradle遠程依賴第三方包版本號建議寫死,避免新版本不兼容或不穩定導致Crash
- 調用第三方包或JDK的方法時,要跳進看源碼決定是否加try-catch,避免Crash
- 確認是否要加防混淆,否則Release會有問題
-
邊界情況:
- 有切換線程的回調函數在修改UI前最好先判斷Activity是否存活,若死亡要阻止UI修改并做必要的變量回收
- 使用Utils.equals()進行Float/Double等非精確值的對等判斷
- 除2建議改為乘0.5,防止float精度丟失;除數非0判斷
- 空指針問題
4.Android知識架構圖(水印有出處)
PART TWO——讀書角
即將開通...預告一下,接下來打算看的書是《Android源碼設計模式解析與實戰(第二版)》,之前一直想看開源框架源碼想學其設計理念,但苦于沒有很好切入點看起來有些費勁不了了之,正好有這樣一本書從設計模式出發進行源碼解析,希望在真正的項目實戰中能有所幫助~
PART THREE——小心情
過去的這一個月真的太豐富多彩了,從零零散散的前半段就能看出來重心還不在技術成長上,大部分時間是在培訓和融入,感受頗深真不知道從何說起,那就分成幾個大塊說說吧~
1.培訓篇
鵝廠對于我們畢業生真的非常重視了,先來感受下入職后培訓安排,真的是非常規范和完整了!
- 【公司級】長達8天的封閉培訓像重回校園,以班級和小組形式上課、答辯、比賽、考試、團建、晚會...在了解公司的發展歷程、行業知識、業務布局和相關制度規定的同時,還拓展視野和人際網絡。
- 【BG級】通過線上線下的通識、專業課程和為期1個月的MINI項目實戰,進一步了解PCG組織架構并熟悉產品研發流程。
- 【部門級】1周豪華技術課程(如后臺/前端/算法/技術研究)和1個月的MINI項目,對騰訊視頻前端、內容、視頻技術、推薦、搜索、平臺等方面有個系統的了解。
整套培訓下來真是受益頗深,講師還提供了精心準備的課件供課后學習,無處不體現鵝廠對畢業生細致入微的關懷,更好的幫助我們從學生身份轉變成職業人。
多說一句,原以為很輕松的培訓其實蠻辛苦的,記得封培的時候天天兩點多才回寢,但每天真是超級開心活力無限,能與這么多優秀善良的朋友共事,是鵝廠帶給我的第一份寶貴的財富!
2.工作篇
- 或許是實習過,再回來的時候感覺不曾離開,雖然多了些新鮮的面孔,但融入到工作氛圍中幾乎沒費什么勁,除了第一天就得知自己有需求了??當然有了組里大佬的幫助,還是挺順利的~
- 項目迭代速度還是很快的,除了要接收各種文檔和學習新操作,還要有不少的輸出,對于新鵝來說都還不是很熟練,所以想辦法做好總結整理。例如,按照類型和版本對各種文檔和鏈接進行分類收藏,方便查閱和檢索;每天都寫日報清楚做了什么;對每個需求都有個梳理,就我目前還不成熟的理解,差不多這樣:
標題 | 內容 |
---|---|
需求單 | |
終端 | 1.邏輯梳理 2.初步方案 3.疑問 |
協議 | |
數據上報 | |
排期 | 1.任務拆分 2.重要時間節點(1)聯調時間(2)提測時間 |
開發 | 1.涉及框架 2.新知識點 3.CR問題點 |
測試 | 1.測試用例 2.showcase 3.BUG解決 |
- 趕上一些流程規范化的行動, 小到需求單系統狀態的扭轉流程,大到開源協同的建設,想進階成職業人還有很多要學~
3.生活篇
- 給自己定些小習慣希望自己能一直堅持下去,至少目前還在堅持的,比如上班路上看技術文章、午睡前學英語、晚上運動拉抻一下。
- 周末盡量不賴在家里睡大覺,要不來公司學習,要不和好朋友去嗨皮,最近幾個周末的大頭是MINI項目,體驗一次終端轉行前端的刺激。
- 公司的福利還是一如既往的給力,在不久的將來我身邊會占滿各種鵝定制品了。
PART FOUR—— 照片冊
首先,最想分享的是這篇記錄八天封培的推送→→又見七三 // 大梅沙流水賬←←是我培訓小組人美歌甜心善良的雨心的文章,還有超級多的照片喲,我不定時入鏡哈哈~
團寵弟弟的作品,晚會主KV,也是三組每個人的桌面壁紙哦~
接下來就是一些隨手拍~一二樓展廳的其中一個作品(高級定制,整個人像的承重點只是腳尖喲~),整個展廳不要太炫,來濱海參觀不能錯過的地方!
終于知道“濱海大廈”中的海是哪了!
據說是封閉低溫的濱海最溫暖的地方,想象一下在36樓懸空層俯視天空的感覺,不要太好!
中秋節禮盒,圓圓的表情太可愛了吧,口味和顏色搭配也很贊!
最后,不知道說啥了給大家劈個叉把!希望大家都多多運動~~