识字粗堪供赋役,不须辛苦慕公卿。这篇文章主要讲述Android开发 关于静态static类与static方法持有Context是否导致内存泄露的疑问相关的知识,希望能为你提供帮助。
简述在android开发的过程中,难免会使用单例模式或者静态方法工具类.我们会让它们持有一些外部的Context或者View一般有以下几种情况:
- 单例模式,类的静态变量持有Context
- 单例模式,类的静态变量持有View
- 单例模式,方法引入Context
- 工具类静态方法持有Context
- 工具类静态方法持有View
- 工具类静态变量持有Context
- 工具类静态变量持有View
Context的类型认识在讲解关于静态持有Context之前,我们需要来认识一下Context自己的区别,原则上Context其实只有2种(尽管Activity/Fragment/Service/都有Context,但是实际上他们属于一个类型的Context)
第一种
应用的Context,下面的2行代码都是调用应用的Context,这个Context在一个app里只会有一个.并且在App启动时创建,App关闭时消亡,所以这个Context是贯彻App生命周期全程的.
Context applicationContext = getApplicationContext(); Context baseContext = getBaseContext();
第二种
Activity 或者 Service 自己,Activity 或 Service自己本身就是Context,这种Context的生命周期只在Activity或Service的生命周期下,关闭了Activity后Context理所应当的也随着消亡.有多少Activity和Service就会有多少个Context,并且重复多次创建某个Activity的时候Context也是多个
【Android开发 关于静态static类与static方法持有Context是否导致内存泄露的疑问】
单例模式持有Context的情况
工具类持有Context的情况
推荐阅读
- Android Studio酷炫插件——自动化快速实现Parcelable接口序列化
- android studio学习
- Android 调试桥(ADB)
- 搜索引擎营销(SEM)的数据科学
- 什么是最好的统计编程语言(信息图)
- 8个有用的Shell数据科学命令
- Scikit-Learn教程(棒球分析(2))
- NLP的歌词分析和R的机器学习
- 使用R和PhantomJS进行Web爬取