記一波坑Activity onCreate call startService

記一波坑

源自測試提了一個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(可讀)一個都沒佔到

後續慢慢優化😂

就這樣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章