技术原理

Android Singleton 单例模式运用01

目地:保证一个类型总是造成一个物品

废话不多说立刻看来Singleton怎幺实操

这一书写在Android Memory Leak及衍伸难题01有提及
我准备把每一个难题都拆出来探讨而且某些探讨解决方法
防止在一篇文章中提及好几个难题而造成阅读者搞混解决方法

实操完后立刻就来运用一下较为一下差别

一般情况
最先在一般沒有应用Singleton的状况,大家一切一个地区应用到物品都务必new一个新的
在这个範例中大家在一个Activity通话了三个API,在沒有Singleton的情况下,就造成了三个不一样的物品
https://ithelp.ithome.com.tw/upload/images/20200519/20126774db0NxUBCIp.png

应用Singleton
接下去大家导进Singleton Pattern在一样的情景下应用,全部地区全是应用同一个物品。在这个範例中大家物品佔用的內存室内空间便是本来的三分之一了
https://ithelp.ithome.com.tw/upload/images/20200519/20126774IbPxRVsvQU.png

一开始提到的目地(保证一个类型总是造成一个物品),将会会有一个疑惑,只造成一个这件事情有这幺关键吗?
自己觉得,平时不大经营规模的开发设计或是內存很充裕的状况,也许你做不做都觉得不上差别,就如大家不久举的一个事例经营规模不大,复位一次压根佔用不上是多少時间,自然做不做从一般的应用或是检测下,是没有办法发觉的

举的事例讨论一下

大家假定这一物品在复位的情况下必须很高的成本费
这里我还在复位的情况下姿势再加必须载入一张3MB的图片资源档
https://ithelp.ithome.com.tw/upload/images/20200519/2012677453NyT6txqm.png

一般情况
能够见到在2次复位中间能用內存立即少3%了
对于我是怎幺Log內存的能够去爬爬文,我是看这个StackOverFlow
https://ithelp.ithome.com.tw/upload/images/20200519/20126774r6j0MLVhjf.png

应用Singleton
在这里2次复位中间內存基本上沒有变化,关键缘故便是用Singleton Pattern后,sInstance物品仍在,因此压根不用再再次new一个新物品,自然就不容易有多的內存被佔用
https://ithelp.ithome.com.tw/upload/images/20200519/20126774sOSlzSn4NW.png

看了这篇实际上也是一个依据,从平时就刚开始培养优良的编写习惯性,防止Project越养越肥,那时候重新构建、提升效率保证抱头痛哭

Android Singleton 单例模式运用02(Multi-Thread、Synchronize)

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
人工智能ai换脸软件 投稿者
我还没有学会写个人说明!
最近文章
  • * 没有更多文章了
  • 热门搜索

    分类目录