美文网首页Android开发Android开发经验谈Android开发
bug日记-单例模式下的监听器应该怎么设置?

bug日记-单例模式下的监听器应该怎么设置?

作者: ifjgm | 来源:发表于2019-05-31 18:16 被阅读2次

概述

没错,这是一个bug引发的思考。其实今天这个标题感觉很难取,可能词穷,也可能语文体育老师教的。不会归纳总结。现在,开始说正事。

镇楼的妹子要漂亮

代码是枯燥的,那么。。。。


image

问题描述

一般Retrofit、OkHttp 大家都会封装为单例模式。在我司的一个项目中OkHttp中有个文件上传进度拦截器。拦截器的构造函数里有个文件上传进度监听器。因为是单例模式,那么很显然 OkHttp只会初始化一个实例,那同样的文件进度拦截器也只会初始化一个实例,于是拦截器的实例中也只会有一个文件进度监听器的实例(未提供设置方法)。而监听器的实例是一个Activity 。 当多次传入不同的 Activity 实例时,其实真正起作用的只有第一次传入的 Activity 实例。在监听器的回调函数中,需要使用到 Activity 中的成员变量。由于此 Activity实例已经没有引用指向它。所以这就导致内存泄漏或因为其中的成员变量等为null而导致空指针。总之,这一种很不好的做法,会导致很多问题。

最佳实践

  • 避免使用 Activity 等的实例作为网络请求等耗时操作的监听器。由于网络请求耗时等问题,无法释放从而导致内存泄漏
  • 由于retrofit、okHttp 等一般使用单例,那么对于他们内部使用的监听器最好使用设置的方式,否则无法及时更新。

总结

这篇博文虽未涉及到任何代码,也没有什么技术。但个人感觉技术的思考更为重要。如何更好的利用、使用技术远比技术重要。希望对你有帮助!!

相关文章

  • bug日记-单例模式下的监听器应该怎么设置?

    概述 没错,这是一个bug引发的思考。其实今天这个标题感觉很难取,可能词穷,也可能语文体育老师教的。不会归纳总结。...

  • android开发单例模式和Rxjava组合bug

    android开发单例模式和Rxjava组合bug 纪录一个关于单例模式和Rxjava组合使用的bug。项目中关于...

  • 老司机开高铁带你深入理解单例模式(sigleton)线程安全问题

    今天,趁着大家都在改bug,而我又不是特别忙的情况下,深入的学习了一下单例模式。 下面就让我们来聊一聊单例模式: ...

  • 设计模式

    手写单例模式(线程安全) 你知道几种设计模式?单例模式是什么?Spring中怎么实现单例模式?

  • Api对接之-单例模式

    这次的api对接,除了使用适配器模式和工厂模式,同时也用到了单例模式。何为单例模式,单例模式应该算是设计模式中较为...

  • 设计模式

    设计模式简介 单例设计模式 问题:单例设计模式是什么?为什么要学它?怎么用它? 1.定义:单例模式(Singlet...

  • 设计模式之单例模式

    今日看了下比较常用的单例模式。整体带大家看一下单例模式。 单例是什么 最简单的一种设计模式。比较典型的单例的应用,...

  • 线程同步

    1、synchronized 单例模式下synchronized实现同步 2、lock 单例模式下lock实现同步...

  • 单例设置模式

    单例设置模式包括饿汉式和懒汉式,代码示例如下: 单例设置模式的几个要素:1.私有化的构造方法,这样便不能给类实例化...

  • Java编程——单例模式的安全性

    单例模式,我想大家再熟悉不过了,不过本文不是介绍单例模式该怎么写的。 本文来说说怎么破坏一个单例,让你写的单例变成...

网友评论

    本文标题:bug日记-单例模式下的监听器应该怎么设置?

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