Context
翻译成中文大概是:“上下文,背景”的意思。
这是一个抽象类,这个类的具体左右是什么呢?
Api文档是这样描述的:
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc.
下面摘自http://stackoverflow.com/questions/3572463/what-is-context-in-android的描述
As the name suggests, its the context of current state of the application/object. It lets newly created objects understand what has been going on. Typically you call it to get information regarding another part of your program (activity, package/application)
You can get the context by invoking getApplicationContext()
, getContext()
,getBaseContext()
or this
(when in the activity class).
Typical uses of context:
-
Creating New objects: Creating new views, adapters, listeners:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
-
Accessing Standard Common Resources: Services like LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE);
this.getResources().get***
getApplicationContext().getSharedPreferences(*name*, *mode*);
(AlarmManager)getSystemService(Context.ALARM_SERVICE);//闹钟相关
Context.getSystemService(Context.CONNECTIVITY_SERVICE);//网络服务相关
-
Accessing Components Implicitly: Regarding content providers, broadcasts, intent
getApplicationContext().getContentResolver().query(uri, ...);
主要的作用有3个:
1.创建对象
2.获取公共资源文件,获取系统的某些管理器,比如控制电源,网络,等等
3.调用系统组件
Context是一个抽象类,我们先看下他的继承方式:
Known Direct Subclasses
|
Known Indirect Subclasses
AbstractInputMethodService, AccessibilityService, AccountAuthenticatorActivity, Activity, ActivityGroup, AliasActivity, Application, BackupAgent, BackupAgentHelper, BasicDream, ContextThemeWrapper, and 16 others.
|
可以看出,常见的Activity,Application等都是继承自Context的子类ContextWrapper。
这里不得不提下:由于Context是抽象类,没有具体的实现,他有两个实现类,其中一个就是ContextWrapper,一个包装类。这个包装类就替Context实现具体的操作,比如获取公共的资源
public class ContextWrapper{
Context mContext
public ContextWrapper(Context ctx){
mContext = ctx
}
public Resourced getResources(){
return mContext.getResources()
}
//... all other Methods are implementing the same AdapterPattern
}
这下明白了吧?原来我们平时经常在Activity中使用的this.getResources().***是在这个地方被实现的!
以上摘自:http://stackoverflow.com/questions/9004739/which-class-is-implementing-contextwrappers-methods-in-android
最后,如果需要使用Context的时候,但是这时候没有Context怎么办?比如不在Activity类中。参考前面
You can get the context by invoking getApplicationContext()
, getContext()
,getBaseContext()
or this
(when in the activity class).
分享到:
相关推荐
### Android Context深度解析 ...总之,`Context`在Android开发中扮演着至关重要的角色,正确理解和使用`Context`不仅能够提升应用的性能,还能有效避免常见的内存泄漏问题,确保应用的稳定性和效率。
【Context的理解】 Context在Android开发中扮演着至关重要的角色,它是应用环境全局信息的接口,提供了与系统交互的各种方法,如启动Activity、广播、服务等。Context主要分为三类:Application、Activity和Service...
PASCAL Context,全称为PASCAL Context Dataset,是计算机视觉领域一个重要的数据集,尤其在语义分割和场景理解任务中占据着至关重要的地位。该数据集是PASCAL VOC(Visual Object Classes Challenge)的扩展,旨在...
在Web开发中,`contextPath`是一个非常关键的概念,它代表了Web应用程序在服务器上的根目录路径。在Java Servlet环境中,`contextPath`是Servlet容器(如...理解并熟练掌握这一技巧,对于编写健壮的前端代码至关重要。
在网页设计中,元素的布局和样式控制是至关重要的,其中Marging、Border、Background、Padding以及Context等概念是CSS(层叠样式表)中的基本元素。这些概念的理解和运用对于创建美观且功能完善的网页至关重要。 ...
《Context手册:深入理解文档排版与设计》 在IT领域,尤其是对于那些从事文档处理、排版设计以及LaTeX爱好者来说,Context无疑是一个强大的工具。由Hans Hagen和Taco Hoekwater编写的“Context参考手册”是学习和...
总结来说,理解并正确使用Context是Android开发中的关键。通过合理传递和管理Context,我们可以有效地进行组件交互和服务调用,从而构建出功能完善的Android应用程序。在实践中,应避免不必要的Context持有,遵循...
在Android开发中,反射是一种强大的编程技术,它允许我们在运行时检查和操作类、接口、字段和...然而,需要注意的是,过度使用反射可能会导致代码难以理解和维护,且性能开销较大。因此,除非必要,否则应谨慎使用。
首先,我们需要理解`Context`的基本含义。`Context`可以被视为应用程序的环境或上下文,提供了访问系统服务、应用资源以及与用户交互的能力。在Android中,最常见的`Context`类型有`Application`、`Activity`和`...
一、理解NSManagedObjectContext NSManagedObjectContext是CoreData架构中的关键组件,它充当了应用程序与持久化存储之间的桥梁。每个MOC都有自己的内存中对象图,并负责跟踪这些对象的状态,如创建、更新或删除。...
`Context`的理解和正确使用对于编写健壮的Android应用至关重要。下面将详细介绍`Context`的基本概念、类型、常用方法以及在实际开发中的应用。 一、`Context`的基本概念 `Context`是Android框架中的一个基础类,它...
总的来说,理解反射和如何在Android中使用它是提高代码灵活性和解决问题的关键技能。然而,开发者应该谨慎使用,因为它可能会引入复杂性和潜在的问题。在能避免使用反射的情况下,尽量遵循最佳实践,以保持代码的...
在Android开发中,`BaseAdapter`是一个非常关键的组件,它允许我们自定义ListView、GridView等控件的数据展示方式。...通过理解这些应用场景,我们可以更好地设计和实现自定义适配器,从而提高Android应用的用户体验。
首先,理解反射的基本概念。反射是Java提供的一种强大的机制,允许程序在运行时检查类、接口、字段和方法的信息,并能动态调用对象的方法或访问其属性。在Android中,我们可以利用反射来获取并操作类的私有成员,...
"Context jQuery"这个标题可能是指在使用jQuery时如何理解和操作上下文(Context)这一概念。 首先,理解jQuery中的“Context”至关重要。在JavaScript中,上下文通常指的是函数执行时的`this`关键字指向的对象。而...
`Context`字面上可以理解为上下文,它封装了应用程序运行时所需的各种环境信息,包括应用程序的全局信息、当前运行状态、资源管理等。在Android的`framework package`中,`Context`类被定义在`android.content....
计算机视觉(CV)领域的顶级会议CVPR在2016年提出了一篇关于自动上下文(Auto-Context)技术应用于人体姿态估计的论文。这项工作以其创新性和实用性引起了广泛的关注。本文将深入探讨Auto-Context的概念,以及在姿态...
Context可以理解为应用运行时的上下文环境,提供了对系统资源和组件的访问接口。本文将深入探讨Context的基本概念,以及在实际开发中常见的误解——ApplicationContext,并讨论Context的正确使用方式,特别是防止...
在了解如何使用Vue实现自定义上下文菜单(Context-Menu)之前,让我们先理解一下上下文菜单的基本概念。上下文菜单是用户对页面元素执行右键操作时弹出的菜单,它允许用户快捷地执行一些与当前元素相关的操作。在Web...