Android Context解析

Android Context解析

郭神:Android Context完全解析,你所不知道的Context的各种细节
鸿洋:Android Context 上下文 你必须知道的一切

1.Context类型
android.content.Context

这里写图片描述

ContextWrapper是上下文功能的封装类。
ContextImpl则是上下文功能的实现类。
ContextThemeWrapper是一个带主题的封装类。

2.Context数量

Context数量 = Activity数量 + Service数量 + 1  

3.Context使用

这里写图片描述

数字1:启动Activity在这些类中是可以的,但是需要创建一个新的task。一般情况不推荐。
数字2:在这些类中去layout inflate是合法的,但是会使用系统默认的主题样式,如果你自定义了某些样式可能不会被使用。
数字3:在receiver为null时允许,在4.2或以上的版本中,用于获取黏性广播的当前值。(可以无视)
注:ContentProvider、BroadcastReceiver之所以在上述表格中,是因为在其内部方法中都有一个context用于使用。

4.获取Application Context

getApplication():语义性非常强,一看就知道是用来获取Application实例的,但是这个方法只有在Activity和Service中才能调用的到。
getApplicationContext():getApplicationContext()方法的作用域会更广一些,任何一个Context的实例,只要调用getApplicationContext()方法都可以拿到我们的Application对象。
getBaseContext():得到的是一个ContextImpl对象,是Context功能的实现类。

5.自定义Application

Application全局只有一个,它本身就已经是单例了,无需再用单例模式去为它做多重实例保护。

public class MyApplication extends Application { 

    private static MyApplication app; 

    public static MyApplication getInstance() {
        return app;  
    }

    @Override 
    public void onCreate() { 
        super.onCreate();
        app = this;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值