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()设置的上下文


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

context和getApplicationContext()介绍

在android中常常会遇到与context有关的内容 浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder...

Android中Activity.this,getApplicationContext(),getBaseContext()和this详解

AlienTech for better life!~
  • twlkyao
  • twlkyao
  • 2013年12月28日 19:40
  • 6053

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

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

android studio中Mainactivity.this和getApplicationContext有什么不同

最近一直在学习安卓开发,但是网上的很多教程都是用eclipse开发的,我比较喜欢用android studio去开发,但是发现eclipse里面有很多和as是不同的 就比如最近写一个断点下载小程序,然...

android之getApplicationContext

getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。 Activity.this 返回当前activity的上下文,生命周期只是它所在的Ac...
  • jzp12
  • jzp12
  • 2012年05月28日 20:31
  • 4580

关于Android中的getApplicationContext的知识

Context android.content.ContextWrapper.getApplicationContext() public Context getApplic...

Android Context与GetApplicationContext的区别及使用

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40481055,本文出自:【张鸿洋的博客】 本文大多数内容翻译自:http:...

android XXXActivity和getApplicationContext()区别

从接触android起,到处都能看到context(上下文)的身影,查看源码之后你会发现,它只是个抽象类,具体实现都在ContextWrapper实现。 当你去查看android的源码时,你会发现a...

getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之间的区别

getApplication() getApplicationContext() getBaseContext();

getApplicationContext()、getBaseContext()和Activity.this区别

普通的Android应用程序中,通常有两种Context,Application和Activity,也即getApplicationContext()和Activity的this。 getApplic...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android学习—— context 和 getApplicationContext()
举报原因:
原因补充:

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