Android Context

一、什么是Context

Context可以理解为上下文环境,大概就是里面存储一堆全局变量,这些变量在调用系统 API 时需要用到。

Context持有程序的状态、入口、权限、文件系统、等信息,并且是ActivityServiceApplication等组件的父类。通过这些属性,可以获得各种系统的资源。


ActivityServiceApplication并没有直接继承Context,而是继承自ContextWrapperContextWrapperContext的包装类,内部包含一个Context的引用,指向Context的具体实现类ContextImplContextWrapper内部的所有方法直接调用ContextImpl对应的方法。

Context 真正实现都是 ContextImpl


二、context获取方法

mContext = getApplicationContext();

这种方式获得的context是全局context,整个项目的生命中期中是唯一的且一直存在的。


mContext = getContext();

这种方式获得的contextactivity销毁时,context也会跟着销毁了。


mContext = getBaseContext();

还没用到


三、context导致的内存泄漏

ActivtyService Context 都是每次创建的,而不是全局唯一,所以不要将 Activity Service 当做全局 Context 引用,这样会导致 Activity 无法销毁,一直被引用者。意思就是不要被单例引用。


先了解原理和使用,源码稍后分析.....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值