在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 摧毁他就摧毁
分享到:
相关推荐
【Android Context 与 GetApplicationContext 的区别及使用】 在Android开发中,Context是一个至关重要的概念,它扮演着应用程序组件与系统服务交互的关键角色。Context可以理解为应用运行时的上下文环境,提供了对...
MyApplication.context = getApplicationContext(); } public static Context getAppContext() { return context; } } ``` 通过在自定义的Application类中存储ApplicationContext,并提供一个静态方法来获取...
本文将详细介绍Android中Context的使用,并通过一个简单的Demo展示如何在工具类和View中灵活地获取和使用Context。 首先,我们要明白Context的三种主要类型:Application、Activity和Service。它们都是Context的...
Context context = activity.getApplicationContext(); // 或者使用activity本身,取决于需求 ``` 然后,我们可以使用反射来调用`getApplicationContext()`方法,如果对象不直接公开这个方法: ```java try { ...
作者:Hewi ...来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...首先,Activity的Context和Application的Context肯定不是一个东西,一个是当前活动的 Context,它的生命周期仅限
大家好,今天给大家分享一下Android... aContext = getApplicationContext(); } /**获取Context. * @return */ public static Context getContext(){ return aContext; } } 第5步:运行上述工程效果如下:
总结一下,本教程“012_android 之消息提示toast 和Context”将详细介绍如何在Android应用中使用Toast进行消息提示,以及理解并有效利用Context进行各种操作。通过学习这些基础知识,开发者可以更好地掌握Android...
详细总结了Context是什么?Android系统中Context的继承关系,不同Context源码分析,Context应用场景,getApplication和getApplicationContext区别。
本教程将详细介绍如何通过反射技术获取Context,以及其在工具类中的应用,帮助你摆脱重复传递Context的困扰。 首先,理解反射的基本概念。反射是Java提供的一种强大的机制,允许程序在运行时检查类、接口、字段和...
下面将详细介绍`Context`的基本概念、类型、常用方法以及在实际开发中的应用。 一、`Context`的基本概念 `Context`是Android框架中的一个基础类,它是Android组件(如Activity、Service、BroadcastReceiver等)与...
然而,在某些非UI线程或匿名内部类中,`this`不再代表`Context`,这时就需要使用`ActivityName.this`或`getApplicationContext()`来获取`Context`。需要注意的是,不同类型的`Context`有不同的生命周期和范围,例如`...
这个`Context`可以是Activity或Fragment的`getApplicationContext()`,但推荐使用前者,因为Activity的`Context`更稳定,且生命周期更长。 ```java public class CustomAdapter extends BaseAdapter { private ...
在Android编程中,Context是一个非常重要的概念,它代表了应用程序的环境或上下文,提供了访问系统服务、资源和应用程序特定信息的入口。然而,在大型应用中,由于Activity、Service等组件生命周期的不同,直接通过...
本文将详细介绍Spring中获取ApplicationContext对象的工具类实现方法。 在Spring中,典型的获取ApplicationContext对象的方式是使用ApplicationContext接口的一个实现类,如ClassPathXmlApplicationContext。这是一...
Context是Android中一个非常重要的概念,它提供了访问应用程序级别的资源和服务的能力。获取Context实例是非常必要的,因为在很多情况下,我们需要使用Context来实现特定的功能,例如弹出Toast、启动活动、发送广播...
判断网络是否可用: 注意!是判断网络是否可用,但网络可用不代表一定能上外网的! public static boolean ... .getApplicationContext().getSystemService( Context.CONNECTIVITY_SERVICE); if (m
Context context = getApplicationContext(); File cacheDir = context.getCacheDir(); deleteFilesInDir(cacheDir); public static void deleteFilesInDir(File dir) { if (dir != null && dir.isDirectory()) { ...
1. public abstract Context getApplicationContext ():返回当前进程的单个全局应用对象的 Context。 2. public abstract ApplicationInfo getApplicationInfo ():返回当前应用的完整应用信息。 3. public ...