`

关于Context的理解

 
阅读更多

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是一个抽象类,我们先看下他的继承方式:

 

java.lang.Object
   ↳ android.content.Context
Known Direct Subclasses
Known Indirect Subclasses

可以看出,常见的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理解

    ### Android Context深度解析 ...总之,`Context`在Android开发中扮演着至关重要的角色,正确理解和使用`Context`不仅能够提升应用的性能,还能有效避免常见的内存泄漏问题,确保应用的稳定性和效率。

    Context的理解1

    【Context的理解】 Context在Android开发中扮演着至关重要的角色,它是应用环境全局信息的接口,提供了与系统交互的各种方法,如启动Activity、广播、服务等。Context主要分为三类:Application、Activity和Service...

    pascal context

    PASCAL Context,全称为PASCAL Context Dataset,是计算机视觉领域一个重要的数据集,尤其在语义分割和场景理解任务中占据着至关重要的地位。该数据集是PASCAL VOC(Visual Object Classes Challenge)的扩展,旨在...

    js中获取contextPath

    在Web开发中,`contextPath`是一个非常关键的概念,它代表了Web应用程序在服务器上的根目录路径。在Java Servlet环境中,`contextPath`是Servlet容器(如...理解并熟练掌握这一技巧,对于编写健壮的前端代码至关重要。

    Marging Border Background Padding Context理解

    在网页设计中,元素的布局和样式控制是至关重要的,其中Marging、Border、Background、Padding以及Context等概念是CSS(层叠样式表)中的基本元素。这些概念的理解和运用对于创建美观且功能完善的网页至关重要。 ...

    context manual

    《Context手册:深入理解文档排版与设计》 在IT领域,尤其是对于那些从事文档处理、排版设计以及LaTeX爱好者来说,Context无疑是一个强大的工具。由Hans Hagen和Taco Hoekwater编写的“Context参考手册”是学习和...

    Android的context使用

    总结来说,理解并正确使用Context是Android开发中的关键。通过合理传递和管理Context,我们可以有效地进行组件交互和服务调用,从而构建出功能完善的Android应用程序。在实践中,应避免不必要的Context持有,遵循...

    反射获取Context的实例

    在Android开发中,反射是一种强大的编程技术,它允许我们在运行时检查和操作类、接口、字段和...然而,需要注意的是,过度使用反射可能会导致代码难以理解和维护,且性能开销较大。因此,除非必要,否则应谨慎使用。

    Context的使用

    首先,我们需要理解`Context`的基本含义。`Context`可以被视为应用程序的环境或上下文,提供了访问系统服务、应用资源以及与用户交互的能力。在Android中,最常见的`Context`类型有`Application`、`Activity`和`...

    使用多个Context的CoreData

    一、理解NSManagedObjectContext NSManagedObjectContext是CoreData架构中的关键组件,它充当了应用程序与持久化存储之间的桥梁。每个MOC都有自己的内存中对象图,并负责跟踪这些对象的状态,如创建、更新或删除。...

    Android Context使用例子.

    `Context`的理解和正确使用对于编写健壮的Android应用至关重要。下面将详细介绍`Context`的基本概念、类型、常用方法以及在实际开发中的应用。 一、`Context`的基本概念 `Context`是Android框架中的一个基础类,它...

    通过反射获取Context实例的Demo

    总的来说,理解反射和如何在Android中使用它是提高代码灵活性和解决问题的关键技能。然而,开发者应该谨慎使用,因为它可能会引入复杂性和潜在的问题。在能避免使用反射的情况下,尽量遵循最佳实践,以保持代码的...

    android demo,BaseAdapter传递context的应用

    在Android开发中,`BaseAdapter`是一个非常关键的组件,它允许我们自定义ListView、GridView等控件的数据展示方式。...通过理解这些应用场景,我们可以更好地设计和实现自定义适配器,从而提高Android应用的用户体验。

    通过反射拿到Context Demo

    首先,理解反射的基本概念。反射是Java提供的一种强大的机制,允许程序在运行时检查类、接口、字段和方法的信息,并能动态调用对象的方法或访问其属性。在Android中,我们可以利用反射来获取并操作类的私有成员,...

    Context jquery

    "Context jQuery"这个标题可能是指在使用jQuery时如何理解和操作上下文(Context)这一概念。 首先,理解jQuery中的“Context”至关重要。在JavaScript中,上下文通常指的是函数执行时的`this`关键字指向的对象。而...

    context 在ADROID中的作用

    `Context`字面上可以理解为上下文,它封装了应用程序运行时所需的各种环境信息,包括应用程序的全局信息、当前运行状态、资源管理等。在Android的`framework package`中,`Context`类被定义在`android.content....

    cvpr 16 auto-context代码

    计算机视觉(CV)领域的顶级会议CVPR在2016年提出了一篇关于自动上下文(Auto-Context)技术应用于人体姿态估计的论文。这项工作以其创新性和实用性引起了广泛的关注。本文将深入探讨Auto-Context的概念,以及在姿态...

    Android Context与GetApplicationContext的区别及使用1

    Context可以理解为应用运行时的上下文环境,提供了对系统资源和组件的访问接口。本文将深入探讨Context的基本概念,以及在实际开发中常见的误解——ApplicationContext,并讨论Context的正确使用方式,特别是防止...

    深入理解使用Vue实现Context-Menu的思考与总结

    在了解如何使用Vue实现自定义上下文菜单(Context-Menu)之前,让我们先理解一下上下文菜单的基本概念。上下文菜单是用户对页面元素执行右键操作时弹出的菜单,它允许用户快捷地执行一些与当前元素相关的操作。在Web...

Global site tag (gtag.js) - Google Analytics