重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
【一】Context的作用:访问全局信息
十年的临海网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整临海建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“临海网站设计”,“临海网站推广”以来,每个客户项目都认真落实执行。
Context是访问全局信息的接口,比如说应用程序的资源(图片资源、字符串资源、其他资源...),
所以一些常用组件就会继承Context,目的就是为了访问资源,比如说Activity以及将要学习的Service。
创建项目来看下如何通过Context进行资源的访问。
public class MainActivity extends Activity{ private TextView tv; @Override protected void onCreate(Bundle saveInstanceState){ super.onCreate(saveInstanceState); tv = new TextView(this); // 这里传入参数必须有一个Context,因为这个TextView也需要访问一些资源、全局信息 // Activity也是Context的子类,所以可以传入this tv.setText("HelloAndroid"); //也可通过 R.id.hello_world 访问string.xml中的字符串资源 setContentView(tv); } }
通过查看setText()方法的源码:
setText(int resid){setText(getContext().getResources().getText(resid));}
首先通过getContext()获取与它相关的Context对象,
也就是TextView所保留引用(传入的那个参数)的Context对象,
也就是MainActivity的实例;
然后通过getResources()获取当前程序的资源实例,
再通过getText(),给它一个id就可以返回资源的字符串了。
这就是这个方法的内部实现。
也就是Android中,如果想访问全局信息,必须通过Context。
除了可以获取字符串,还能获取其它资源,例如图片:
ImageView iv = new ImageView(); iv.setImageResource(R.mimap.ic_launcher); setContentView(iv);
【二】Application的用途
很多情况下,我们需要在多个组件之间进行数据的共享,Android为我们提供了一种机制。
Context可以作为全局信息共享的桥梁,所以我们可以用Context进行信息的共享。
我们可以创建一个类,叫做App,继承于Application。
public class App extends Application{ }
然后打开AndroidManifest.xml文件,
添加斜体字中的信息,
通过这种方式,我们就自定义了Android的Application ,
而Application才是真正的全局上下文对象。
在MainActivity中可以通过getApplicationContext()方法,
就可以获得Application全局对象。