在Android编程中,Context类到底是什么?它用于什么?
我在开发者网站上读过这篇文章,但我无法清楚地理解它。
在Android编程中,Context类到底是什么?它用于什么?
我在开发者网站上读过这篇文章,但我无法清楚地理解它。
当前回答
上下文是有关应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。
上下文允许访问特定于应用程序的资源和类,以及调用应用程序级操作,如启动活动、广播和接收意图等。
以下是示例
public class MyActivity extends Activity {
public void Testing() {
Context actContext = this; /*returns the Activity Context since Activity extends Context.*/
Context appContext = getApplicationContext(); /*returns the context of the single, global Application object of the current process. */
Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
Context BtnContext = BtnShowAct1.getContext(); /*returns the context of the View. */
有关详细信息,请访问http://developer.android.com/reference/android/content/Context.html
其他回答
android.content.Context类提供到android系统和项目资源的连接。它是有关应用程序环境的全局信息的接口。
上下文还提供对Android服务的访问,例如位置服务。
Activities和Services扩展了Context类。
语境到底是什么?
根据Android参考文档,它是一个表示各种环境数据的实体。它提供对本地文件、数据库、与环境相关的类加载器、服务(包括系统级服务)等的访问。在这本书中,以及在您使用Android进行的日常编码中,您将看到上下文频繁传递。
摘自《实践中的Android》一书,第60页。
几个Android API需要Context作为参数
如果您查看各种Android API注意,其中许多都将android.content.Context对象作为参数您还将看到“活动”或“服务”通常用作上下文这是因为这两个类都是从Context扩展的。
Context是每个app-s沙盒的android特定api提供访问应用程序私有数据,如资源、数据库、私有文件目录、首选项、设置。。。
对于一个应用程序的所有活动/服务/广播侦听器,大多数私有数据都是相同的。
由于Application、Activity和Service实现了Context接口,因此可以在api调用需要Context参数时使用它们
Context是Android提供的抽象类,因此,它的任务是将应用程序代码与Android系统连接起来。通过从Context继承的类(活动、服务和应用程序),您的应用程序能够访问仅由操作系统访问的资源和功能。
当上下文后代对象被操作系统实例化(通过OS控制的实例化机制,如“意图”)时,它们将由操作系统管理,因此,它们将获得生命周期。
除此之外,将上下文作为方法调用中的参数传递,允许此方法将上下文用作与操作系统通信的通道,以便到达操作系统并要求其执行某些操作或返回某些资源。
将上下文与清单一起可视化
为了将Android环境和Manifest可视化,一个旧的呼叫中心交换机就是一个很好的类比。
基础是Android系统,连接每个正在运行的应用程序的所有应用程序组件的所有电线都出现在这里。
每个“交换机应用程序”都包含一些插件孔,它们代表应用程序的清单组件声明。因此,通过清单声明,Android系统了解到这些插件孔的存在,从而可以通过意图创建对象来插入新的上下文连接。每条连线表示一个Android上下文,该上下文连接到应用程序的某个可启动组件或应用程序本身。您可以使用现有的电线,因为它与Android系统连接,以便请求完成需要通过操作系统完成的所有事情。你可以假设当一个活动被破坏时,它的电线被拔掉了。当构建另一个活动(或另一个组件)时,一条新的电线会出现并连接到正确的清单声明的插孔。
我写了一篇完整的文章,解释了Context如何将您的应用程序与android系统相结合:
上下文意味着Android可以知道我应该参加哪些活动。
1-Toast.makeText(上下文,“输入所有详细信息”,Toast.LNGTH_SHORT).show();它用于此。上下文上下文=ActivityName.this;
2-startActivity(新的Intent(context,LoginActivity.class));
在这个上下文中,意味着你想从哪个活动转到其他活动。context或ActivityName。这比getContext和getApplyinContext更快。