公司專案中音視頻通話頁面小窗功能:
當按home鍵退到桌面后,應用啟動小窗,頁面退到后臺,保持繼續通話,
測驗人員報告出現的問題:
在通話頁面按下home鍵再打開app會像新打開app那樣啟動,然后再次按下home鍵電話自動掛斷,
除錯程序:
我的通話頁面啟動模式是singleInstance,在通話頁面按下home鍵,之前啟動的頁面全部銷魂了,也就是走了onDestroy,再次點app啟動標,Main相關頁面重新onCreate,再次按下home鍵,通話頁面也就走了onDestroy,然后自動掛斷,再次按下home鍵再打開app Main相關頁面沒有重啟,
解決程序:
大家都知道singleInstance啟動的Activity是在新的堆疊中打開的,為什么會被清掉呢,之前Android 10及以下從沒遇到過,公司剛好有兩個機器是Android 11 拿來一試都是必現的,因此我猜想Android 11上與以往的版本有不一樣的地方,難道Android 11的singleInstance 沒有創建新的堆疊,經過測驗,發現堆疊還是有新建,只不過是按下Home鍵,系統會銷毀最近沒有活動的堆疊,也就是按下Home鍵時最新顯示Activity的所在的堆疊不會被銷毀,而是清除其他的堆疊,經過查看組態檔通話頁面沒有設定taskAffinity屬性,抱著試試看的態度,設定了之后發現問題得到解決,
猜想與結論:
因為不設定taskAffinity的Activity默認和Application是相同的,如果不設定的話,按下home鍵時系統會清理最近不活動的和application相同的taskAffinity的所有堆疊,設定taskAffinity之后的Activity所在的堆疊就不會被清理
目前還不知道具體原因,接下來我會單獨研究一番到時與大家分享,也歡迎各位小伙伴一起探討為什么會出現我所得出結論的原因,知道的同學也可以在下方評論說出來
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/350991.html
標籤:其他
