单例造成的内存泄漏
因为单例的静态特点使得其生命周期跟应用的生命周期一样长,所以如不雅应用不恰当的话,很轻易造成内存泄漏。比如下面一个典范的例子。
- public class SingleInstanceClass {
- private static SingleInstanceClass instance;
- private Context mContext;
- private SingleInstanceClass(Context context) {
- this.mContext = context;
- }
- public SingleInstanceClass getInstance(Context context) {
- if (instance == null) {
- instance = new SingleInstanceClass(context);
- }
- return instance;
- }
- }
精确的写法应当是传递Application的Context,因为Application的生命周期就是全部应用的生命周期,所以没有任何的问题。
- public class SingleInstanceClass {
- private static SingleInstanceClass instance;
- private Context mContext;
- private SingleInstanceClass(Context context) {
- this.mContext = context.getApplicationContext();// 应用Application 的context
- }
- public SingleInstanceClass getInstance(Context context) {
- if (instance == null) {
- instance = new SingleInstanceClass(context);
- }
- return instance;
- }
- }
- or
- //在Application中定义获取全局的context的办法
推荐阅读
此次的成功融资让金山云的用户也跟着受益,因为金山云的主流产品将周全降价,个中CDN、云数据库Redis新价动人,降幅最大年夜可达到50%、60%;云办事器价格最大年夜降幅跨越30%;对象存储产品>>>详细阅读
本文标题:Android面试被问到内存泄漏了杂整?
地址:http://www.17bianji.com/lsqh/39898.html
1/2 1