android学习—— context 和 getApplicationContext()

转载 2013年12月02日 11:21:56

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

转自:http://blog.csdn.net/janronehoo/article/details/7348566

绝对让你理解Android中的Context

文章转自:阿拉灯神灯CSDN博客 http://blog.csdn.net/nugongahou110/article/details/46972237 这个问题是St...
  • chi1002
  • chi1002
  • 2016年04月26日 10:53
  • 1483

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

原文地址: http://blog.csdn.net/lixuce1234/article/details/62039807 1、Context概念 其实一直想写一篇关于Context的文章,...
  • u012900118
  • u012900118
  • 2017年05月18日 00:11
  • 206

NDK层获取Application对象

参考了一位大牛的博客,在Java层通过RuntimeInit获取的方式实现的,先贴原链接: http://blog.csdn.net/l173864930/article/details/46919...
  • u011247544
  • u011247544
  • 2016年11月30日 15:18
  • 714

获取全局Context对象,任何时候,任何地方,任何逻辑都可以获取

可能有读者看了,呵呵,在想着,现在获取context对象多简单啊,还有必要说吗,好吧,那我问一个问题,在还没有初始化应用程序的application的时候能获取到Contex对象吗,或者在不能接触程序...
  • shifuhetudi
  • shifuhetudi
  • 2016年02月23日 13:27
  • 1614

Context的学习

canvas对象HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。 画布是一个矩形区域,您可以控制其每一像素。 canvas 拥有多种绘制路径、矩形、圆形、字符以及添...
  • qq_28702545
  • qq_28702545
  • 2016年06月26日 21:42
  • 717

Android Studio使用Robolectric对android程序实现单元测试

关于Robolectric的单元测试
  • CXNSHUAI
  • CXNSHUAI
  • 2015年11月05日 11:11
  • 1435

Android--全局获取Context的技巧

Android中很多地方都会用到Context,弹出Toast的时候需要、启动活动时需要、发送广播的时候也需要、操作数据库的时候需要、使用通知的时候也需要等等等。 或许你现在还没有为得不到Conte...
  • yayun0516
  • yayun0516
  • 2015年05月14日 10:29
  • 1423

Android Context完全解析,你所不知道的Context的各种细节

Context相信所有的Android开发人员基本上每天都在接触,因为它太常见了。但是这并不代表Context没有什么东西好讲的,实际上Context有太多小的细节并不被大家所关注,那么今天我们就来学...
  • sinyu890807
  • sinyu890807
  • 2015年11月09日 09:14
  • 96189

深入探究getApplicationContext和getApplication是不是返回同一个对象?

前言在上篇文章从getApplicationContext和getApplication再次梳理Android的Application正确用法中,我提到 但是我们知道了mApplication和c...
  • ly502541243
  • ly502541243
  • 2016年08月05日 12:04
  • 1014

Android中Context的作用以及Context的详细用法

本文我们一起来探讨一下关于Android中Context的作用以及Context的详细用法,这对我们学习Android的资源访问有很大的帮助,文章中也贴出了一些关于Android Context使用的...
  • bjwjay
  • bjwjay
  • 2016年05月30日 15:59
  • 552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android学习—— context 和 getApplicationContext()
举报原因:
原因补充:

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