Android Activity的onStop()與onDestroy() 回調緩慢,延時調用的問題解決方案

前段時間做項目時遇到奇葩問題,特此記錄
問題發現
我們的項目在語句翻譯功能裏用到了百度語音識別和語音合成,把相關代碼封裝到了library裏面,把library庫放到項目A裏面運行正常,同樣的庫移植到項目B裏面,居然有問題!!! 具體問題就是第一次進入Activity時正常,但是當退出來後立馬再點進去,就奔了,報得異常是語音識別相關類初始化時檢測到上次的對象未被銷燬,不能重複創建新對象,一直以爲是百度語音的問題,找了好久也沒發現問題,鬱悶了一段時間,後面debug了一下 發現在頁面退出後好久以後(大概有個7到8秒吧)才執行onDestroy方法銷燬相關對象,onStop方法也是延時調用!!! 唉 找到問題出現在哪兒了!!!就好解決了 但是令我疑惑的是項目A裏面onDestroy方法執行很快,不知道項目B裏面爲何延時如此之多!!!網上看了一些別人出現該問題的原因 但和我的不一樣,,,不管了,有緣在研究解決吧,反正是有辦法解決目前問題了
解決方法與建議
方法1:監聽物理返回鍵和左上角返回鍵,關閉頁面時銷燬
方法2:把銷燬的相關代碼放到finish()裏面

@Override
    public void finish() {
        super.finish();
        // 不知道什麼原因換個項目以後onDestroy總是在頁面結束後大概7到8秒以後纔會執行
        // 在此時間段內進入翻譯界面會奔潰 無耐之下把釋放代碼放在了finish()裏面執行
        // 釋放語音合成和語音識別的資源
        realease();
    }

建議
  建議儘量不要在Activity的onDestroy方法中做回收資源、數據存儲、狀態改變等操作,特殊問題特殊對待吧!

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