【三】6.Android 中 Context 的理解及使用

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


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文件,

添加斜体字中的信息,<application android:name=".App" ……>,

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

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

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

就可以获得Application全局对象。

时间: 2024-10-13 06:45:28

【三】6.Android 中 Context 的理解及使用的相关文章

Android中Context的理解与使用技巧

Context类,时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法. 但是不懂Context的原理.类结构关系.一个简单的问题是,一个应用程序App中存在多少个Context实例对象呢? Context,中文直译为"上下文",SDK中对其说明如下: Interface to global information about an application environment. This is an ab

《Android笔记3.6》 Android 中 Context 的理解及使用

课程背景:Context 是 Android 中一个非常重要的概念,用于访问全局信息,几乎所有的基础组件都继承自 Context,理解 Context 对于学习 Android 四大基本组件非常有帮助. 核心内容:1.理解 Context2.理解 Application Context 的作用 用于访问全局的资源 很多常用组件都是继承自Context,就是为了方便访问资源. private TextView tv; @Override protected void onCreate(Bundle

(四)Android中Context的理解与使用

一.Context的作用 Context可用于访问全局资源. public class MainActivity extends Activity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = new TextV

Android中Context的理解及使用(二)——Application的用途

实现数据共享功能: 多个Activity里面,可以使用Application来实现数据的共享,因为对于同一个应用程序来说,Application是唯一的. 1.实现全局共享的数据App.java继承自Application: public class App extends Application { private String textData = "default"; public void setTextData(String textData) { this.textData

Android中Context详解 ---- 你所不知道的Context

转载至 :http://blog.csdn.net/qinjuning 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context

Android中Context详解 ---- 你所不知道的Context (转载)

Android中Context详解 ---- 你所不知道的Context (转载) http://blog.csdn.net/qinjuning 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打交道,例如:Service.BroadcastReceiver.Activity等都会利用到Context的相关方法 : 说它陌生,完全是 因为我们真正的不懂Context的原理.类结构关系.一个简单的问题是,一个应用

Android中Context详解 ---- 你所不知道的Context(转)

Android中Context详解 ---- 你所不知道的Context(转)                                              本文出处 :http://blog.csdn.net/qinjuning 前言:本文是我读<Android内核剖析>第7章 后形成的读书笔记 ,在此向欲了解Android框架的书籍推荐此书. 大家好,  今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中 时刻的在与它打

三、android中Handle类的用法

当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉.Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响. 当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上就会被强制关闭,因此我们需要另外起动一个线程来处理长耗

Android中Context的总结及其用法

在语句 android中我们经常遇到这样的情况,在创建一个对象的时候往往需要传递一个this参数,比如:语句 MyView mView = new MyView(this),要求传递一个this参数,这个this究竟指的是什么东西呢? 其实这里的this指的就是当前的Activity.this,是这个语句所在的Activity的this.Activity.this取的是这个Activity的Context,那么这个Context究竟是什么东西呢?它起到什么作用呢? Context 按照英文字面意