您的位置:首页 > 移动开发 > Android开发

Android Context解析

2015-11-12 10:52 357 查看

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: