本文是读了《Android 群英传》第一章--Android体系和系统架构调用栈--之后的读书笔记,感谢作者,在此特别推荐此书。
在Android的应用层里,Android的APP组件架构,即我们常说的四大组件:Activity,Service,Content Provider和Broadcast Receiver,组成了一个Android程序的最基本元素。
四大组件里,能直接和用户交互的只有Activity,它提供窗口展示信息,然后处理用户操作。而Activity里的信息,可以是通过资源获取,可以是通过Service从后台计算、处理、下载的结果,可以是Content Provider从其他应用获取的信息,也可以是通过Broadcast Receiver获取的广播信息。而这四大组件之间,也可以使用Intent方法进行信息传送。如图所示:
Context是我们开发中常见的一个类,在四大组件里经常都会调用到与之相关的方法。首先我们可以看看它的继承关系图:
由图我们可以发现,其实Application、Service和Activity都是继承自Context类,所以一个应用程序创建Context就是在创建Context的实现类的时候。因为一个应用程序里有且仅有一个Application对象,所以也可以知道一个APP应用里的Context数目为:
总Context实例个数=Service个数+Activity个数+1
所以我们要获取某个Activity的Context时候,在这个Activity里可以直接用this获取,而在某些匿名类中则必须用XXActivity.this才能获取到。而获取整个Application的Context,则可以用getApplicationContext()方法来获取。