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方法中做回收资源、数据存储、状态改变等操作,特殊问题特殊对待吧!

猜你喜欢

转载自blog.csdn.net/huahuaxiaolian/article/details/85231832