由Context的类关系图可以得到如下信息:
Activity的父类是ContextThemeWrapper,因为Activity有主题。
Application和Service是继承于ContextWrapper的。
一个应用中的Context的数量=进程的数量(一个进程有一个application)+activity的数量+service的数量。
重点解释前三个:
show a dialog只能用activity的原因是:由于Android系统的安全性考虑,dialog必须依附于页面出现。
start activity不推荐使用application和service的原因是:一个Activity是需要在一个任务栈中的。application和service是没有任务栈的,如果用application和service启动一个activity,必须设置FLAG_ACTIVITY_NEW_TASK标志。
inflate引入布局不推荐使用application和service的原因:如果引入的布局加入了theme主题的话,application和service是不支持的。