android学习—— context 和 getApplicationContext()

原创 2012年03月13日 14:04:51

在android中常常会遇到与context有关的内容

浅论一下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。

new AlertDialog.Builder(getApplicationContext())时发生错误:

E/AndroidRuntime(5844): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

于是查了查:

getApplicationContext() 生命周期是整个应用,应用摧毁它才摧毁 Activity.this的context属于activity ,activity 摧毁他就摧毁

activity.this要返回一个activity,而getApplicationContext()就不一定返回一个activity


getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁

getBaseContext()  返回由构造函数指定或setBaseContext()设置的上下文


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android中的getApplication()、getApplicationContext的区别与用法

getApplication()和getApplicationContext()方法的区别和使用。

熟悉Android Context与GetApplicationContext的区别及使用,能够解决内存泄漏问题

原文地址: http://blog.csdn.net/lixuce1234/article/details/62039807 1、Context概念 其实一直想写一篇关于Context的文章,...

android context 以及 getApplicationContext()

从上可知一下三点,即:         1、它描述的是一个应用程序环境的信息,即上下文。         2、该类是一个抽象(abstra...

Android全局变量值之ApplicationContext

第一步:定义全局变量对象(类),继承至 android.app.Application ,代码如下: import android.app.Application; public class ...

getApplication()和getApplicationContext()区别

相同二者使用结果相同,我们写个代码分别打印二者返回结果,发现两个方法获取的是同一个对象。

如何解决linux报No space left on device错误

前言今天同事配置服务器发现vim文件的时候,竟然失败了,报了这个错误:No space left on device,故帮忙解决了一下。顺便记录一下。正文发现问题出现这个错误第一反应是空间满了。df ...

Android系列教程(六) adb操作命令详解

http://tech.163.com/mobile/09/1105/06/5NBAG1OQ00112K88.html2009-11-05 06:45:51 来源: 天极网 (重庆) 跟贴 3 ...

Android开发中adb命令的常用方法

Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于...

LoRaWAN协议中文版 第17章 Class C - 持续接收的终端

LoRaWAN协议中文版 第17章 Class C - 持续接收的终端
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)