美文网首页
这是一个有毒的方法 onDestory

这是一个有毒的方法 onDestory

作者: wan7451 | 来源:发表于2018-10-26 17:28 被阅读22次

    以前从来没有关注过这个方法,直接释放资源,直到今天遇到这个大坑 坑 坑。

    image

    项目中用到了Socket 长连接,一般的操作都是在 Activity 初始化的时候建立连接,销毁的时候断开连接。

    今天测试小哥哥突然发现重大Bug:界面拉取不到数据。

    通过调试发现是连接一直连接不上。而且,每次打开页面,不是先建立连接,而是先断开连接,然后再进行真正的连接。
    经过一通神操作后,发现问题出的 onDestory 方法上。在页面结束的时候,他并没有立刻执行!!

    image

    简单处理下,顺利解决问题

        @Override
        protected void onPause() {
            super.onPause();
            if (isFinishing()) {
                destroy();
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            destroy();
        }
    
        private boolean isDestroyed = false;
    
        private void destroy() {
            if (isDestroyed) {
                return;
            }
            // 回收资源
            isDestroyed = true;
        }
    
    image

    相关文章

      网友评论

          本文标题:这是一个有毒的方法 onDestory

          本文链接:https://www.haomeiwen.com/subject/xqdltqtx.html