`
aspnetwinform
  • 浏览: 89817 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

context和getApplicationContext()介绍

 
阅读更多

在android中常常会遇到与context有关的内容,大多都是作为参数在传递,但是它的作用究竟是什么呢

先说它的用法,举个例子

在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的参数就是一个context,在这里我们传入的是this,那么这个this究竟指的是什么呢? 这里的this指的是Activity.this,是这个语句所在的Activity的this,是这个Activity 的上下文。网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。 AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传 入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它的生命周期了。 所以,在这里我们只能使用Activity的this。

下面具体解释它的内涵

其实Activity.this就是context的一个具体,Activity.this是你当前所在的activity的上下文,this.getApplicationContext()取得的是整个应用的上下文,在你把他们作为参数传递的时候,多数是用来标注你要在哪个activity里面进行操作,比如上文提到的AlertDialog.Builder builder = new AlertDialog.Builder(this);你是要在当前的activity里面创建对话框,如果传递的是this.getApplicationContext(),这是整个应用的上下文,代码怎么会知道你想在哪个具体的activity里面创建对话框呢,所以,在这里应该传入的是你想创建对话框的那个activity的上下文,即Activity.this.如果这你都理解了,那么你也该明白,每个activity都有自己的上下文,而整个应用只有一个上下文.

总结

getApplicationContext()
返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。


Activity.this

返回当前activity的上下文,生命周期只是它所在的Activity,activity 摧毁他就摧毁

分享到:
评论
1 楼 林奇峰 2013-09-27  
嗯,都是这么设计的,这是scope问题,程序是为了处理数据,为了方便处理数据,将数据分别存储在不同的context(集合)里,不同的集合有不同的作用域(范围)从而达到数据安全,数据操作方便等目的,丫头学习要深究,不深究那么你只会andoird,如果深究你啥都会。好的设计经常被抄袭,这是一切行业的通用法则。

相关推荐

    Android Context与GetApplicationContext的区别及使用1

    【Android Context 与 GetApplicationContext 的区别及使用】 在Android开发中,Context是一个至关重要的概念,它扮演着应用程序组件与系统服务交互的关键角色。Context可以理解为应用运行时的上下文环境,提供了对...

    在项目的任何地方轻松获取Context的demo

    MyApplication.context = getApplicationContext(); } public static Context getAppContext() { return context; } } ``` 通过在自定义的Application类中存储ApplicationContext,并提供一个静态方法来获取...

    Android的context使用

    本文将详细介绍Android中Context的使用,并通过一个简单的Demo展示如何在工具类和View中灵活地获取和使用Context。 首先,我们要明白Context的三种主要类型:Application、Activity和Service。它们都是Context的...

    反射获取Context的实例

    Context context = activity.getApplicationContext(); // 或者使用activity本身,取决于需求 ``` 然后,我们可以使用反射来调用`getApplicationContext()`方法,如果对象不直接公开这个方法: ```java try { ...

    android中用getApplicationContext()会不会避免某些内存泄漏问题?

    作者:Hewi ...来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...首先,Activity的Context和Application的Context肯定不是一个东西,一个是当前活动的 Context,它的生命周期仅限

    谈谈Android里的Context的使用

    大家好,今天给大家分享一下Android... aContext = getApplicationContext(); } /**获取Context. * @return */ public static Context getContext(){ return aContext; } } 第5步:运行上述工程效果如下:

    012_android 之消息提示toast 和Context

    总结一下,本教程“012_android 之消息提示toast 和Context”将详细介绍如何在Android应用中使用Toast进行消息提示,以及理解并有效利用Context进行各种操作。通过学习这些基础知识,开发者可以更好地掌握Android...

    从源码解析Context思维导图

    详细总结了Context是什么?Android系统中Context的继承关系,不同Context源码分析,Context应用场景,getApplication和getApplicationContext区别。

    通过反射拿到Context Demo

    本教程将详细介绍如何通过反射技术获取Context,以及其在工具类中的应用,帮助你摆脱重复传递Context的困扰。 首先,理解反射的基本概念。反射是Java提供的一种强大的机制,允许程序在运行时检查类、接口、字段和...

    Android Context使用例子.

    下面将详细介绍`Context`的基本概念、类型、常用方法以及在实际开发中的应用。 一、`Context`的基本概念 `Context`是Android框架中的一个基础类,它是Android组件(如Activity、Service、BroadcastReceiver等)与...

    context 在ADROID中的作用

    然而,在某些非UI线程或匿名内部类中,`this`不再代表`Context`,这时就需要使用`ActivityName.this`或`getApplicationContext()`来获取`Context`。需要注意的是,不同类型的`Context`有不同的生命周期和范围,例如`...

    android demo,BaseAdapter传递context的应用

    这个`Context`可以是Activity或Fragment的`getApplicationContext()`,但推荐使用前者,因为Activity的`Context`更稳定,且生命周期更长。 ```java public class CustomAdapter extends BaseAdapter { private ...

    Android编程获取全局Context的方法

    在Android编程中,Context是一个非常重要的概念,它代表了应用程序的环境或上下文,提供了访问系统服务、资源和应用程序特定信息的入口。然而,在大型应用中,由于Activity、Service等组件生命周期的不同,直接通过...

    Spring获取ApplicationContext对象工具类的实现方法

    本文将详细介绍Spring中获取ApplicationContext对象的工具类实现方法。 在Spring中,典型的获取ApplicationContext对象的方式是使用ApplicationContext接口的一个实现类,如ClassPathXmlApplicationContext。这是一...

    Android全局获取Context实例详解

    Context是Android中一个非常重要的概念,它提供了访问应用程序级别的资源和服务的能力。获取Context实例是非常必要的,因为在很多情况下,我们需要使用Context来实现特定的功能,例如弹出Toast、启动活动、发送广播...

    Android 判断网络是否可用 & 获取IP地址 & 获取以太网口MAC地址

    判断网络是否可用: 注意!是判断网络是否可用,但网络可用不代表一定能上外网的! public static boolean ... .getApplicationContext().getSystemService( Context.CONNECTIVITY_SERVICE); if (m

    android管理应用程序相关代码及资源路径

    Context context = getApplicationContext(); File cacheDir = context.getCacheDir(); deleteFilesInDir(cacheDir); public static void deleteFilesInDir(File dir) { if (dir != null && dir.isDirectory()) { ...

    Android 中Context的使用方法详解

    1. public abstract Context getApplicationContext ():返回当前进程的单个全局应用对象的 Context。 2. public abstract ApplicationInfo getApplicationInfo ():返回当前应用的完整应用信息。 3. public ...

Global site tag (gtag.js) - Google Analytics