【三】6.Android中Context的理解及使用-创新互联

【一】Context的作用:访问全局信息

创新互联公司-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、川西大数据中心、等保安全、私有云建设等企业级互联网基础服务,来电联系:13518219792

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:name=".App"……>,

通过这种方式,我们就自定义了Android的Application ,

而Application才是真正的全局上下文对象。

在MainActivity中可以通过getApplicationContext()方法,

就可以获得Application全局对象。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:【三】6.Android中Context的理解及使用-创新互联
文章URL:http://scyanting.com/article/dpipdj.html