安卓自学笔记
第一章:基础知识
第六节:Context的理解及使用
Context:用来访问全局信息的接口,例如访问应用程序的资源,包括图片,字符串等。
在Android中,要访问全局信息必须通过Context。
下面是在页面中使用一个TextView来呈现一个字符串资源
在示例程序中,直接将ContentView直接设置成是一个TextView,
A是继承Context的,所以A是有访问全局信息的能力的,现在,将TextView的文本内容设置为一个存在于strings.xml资源文件中的字符串,
所以我们将onCreate函数改写成,如图:

同理访问图片资源,如图:

Application:很多时候我们需要在不同的组件之间进行数据共享,Context是全局信息共享的桥梁,因此Context也可以用来做全局信息共享的桥梁。
1.再以上的程序基础上再创建一个类,继承Application,并定义一个全局共享的字符串数据,如图

2.通过修改AndroidManifest.xml的application name 属性来自定义Application,Application是一个真正的全局上下文对象,获取Application对象可通过getApplicationContext()这个函数,如图

3.再创建一个A,MainActivity2。并将这个新创建的A当成启动的A,并指明label为Main2,并将原启动的A的label设置为Main1,配置如图:

4.分别为两个A绑定到默认视图
5.为两个默认视图做同样的布局,加入一个文本显示控件,一个文本输入控件,一个按钮,并为按钮写上监听事件代码,用来将对象保存到全局上下文中,并读取显示


6.分别从两个程序入口进入应用,验证结果
先从第一个入口进入并设置全局对象的具体值:

再通过第二个入口进入查看并重新设定一个新的全局对象值:

最后从第一个入口进入再次验证:

通过以上例子可以知道,一个应用程序可能有不能的主入口,而一般一个应用程序启动的时候,都需要初始化一些数据,
对于这种有不同主入口的需求,就不需要为不同的入口各自去编写一套初始化程序。
可以为应用程序配置一个自定义的application,通过对生命周期的学习,得知application的函数会先于activity函数执行,这就方便去做统一的初始化操作了,因为不管从哪个主入口进入程序,都会先执行application的函数。
浙公网安备 33010602011771号