記一波坑
源自測試提了一個bug(ps:剛接手一個開發一年多的產品)
一共兩個界面:A(啓動界面,播放歡迎使用音頻),B(主界面) 測試步驟如下
1.啓動打開首頁
2.左滑退出
實際結果:會再次啓動
自己測了一把還真是,於是理了下思路,看了下代碼
思路:猜測是不是有延遲任務導致重複開啓 B界面
review代碼(尼瑪代碼寫的亂的一逼) 發現有這麼一段代碼
public void goNext(){
startActivity...
Handler().postDelayed({
finish()
}, 1500)
}
我靠這什麼需求 B界面開啓後 A界面還要等1500毫秒才能關閉 問了產品產品也不清楚,開發的人又不在 暫且理解有人爲了解決某個問題加的代碼吧
接下來看下生命週期的日誌 , 項目裏連個聲明週期的打印日誌代碼都沒有 花了2分鐘加上 看了下日誌發現B界面被重複啓動 ,於是找了下A啓動B時候代碼 尼瑪竟然在onStart裏面調用的
A界面等1500毫秒才能關閉 B界面關閉 A調用onStart重新開啓了B 發現問題了 我把goNext調到了onCreate裏面問題不就解決了嘛 測試發現啓動app這時候沒聲音了
播放聲音是通過後臺service進行播放的 onCreate裏面去startService 這種還是第一次見,心想是不是Activity onCreate不能開啓service 然後百度了下 果然猜對了 只有等activty的view初始化完畢後才能開啓serivce(ps 至於爲啥我也不清楚 有時間分析下Service啓動過程)
發現問題到問題解決花了我2兩個小時,坑是一環扣一環 =——=
項目kotlin,java混搭 ui邏輯都堆在一起寫
寫代碼三要素 Stable(穩定) Flexible(靈活) Readable(可讀)一個都沒佔到
後續慢慢優化😂
就這樣