Context是什么
Context是什么?这是从我开始学习Android就有的疑问,刚入行时找了无数的文章,也没有谁能解答我的疑问,有的是不断的告诉我Context是上下文,这不废话吗,我查不到Context的意思是上下文吗?我的意思是什么的上下文。
一转眼工作好几年了,实在惭愧。这两天突然想到Context(思维涣散,容易乱想),想到了Context。我想,现在我可以回答Context是什么了。
还是拿出那张Context的族谱。
当你用到一个方法的时候,传的都是Context,很少是Activity或者是Application,我知道也有,但是少。
Context还真就是上下文(也是废话),当你需要拿到资源的时候,真正给你资源的是ContextImpl对象,但是每个Context最后都会和ContextImpl联系起来。
举个例子,当你用Context.getResources想通过这个拿到一个字符串或者一个图片的时候,context不管是哪种都会给你,但是只有ContextImpl有这个能力。这是因为当你用ContextWrapper中的一种时,ContextWrapper中持有ContextImpl的成员变量,会把从ContextImpl那拿到的给你(多像领导🤣),让你以为是ContextWrapper给你的。当你用的是ContextImpl时,给资源的就是它,当然也是可以的(一一般不会这么用)。
只要你有Context,你就能拿到你想要的资源,这像不像是只要你站在某个区域,你就可以做到,这个是我理解的的上下文(Context)。
其他的像是PackageInfo、ContentResolver、Theme…都是类似的,外观模式。
Categories: