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

转载于:https://blog.51cto.com/sw3458856/1404666

android学习—— context 和 getApplicationContext()相关推荐

  1. Android学习--还有一些小技巧

    这些小技巧 通过上面的这些文章,就把简单的安卓项目总结了一遍,当然你说懂这些就可以做Android开发的话还是不行的,欠缺的还有很多,但欠缺的这些我们有只能在工作中去总结以及不断的提高,这篇文章我们还 ...

  2. Android学习笔记:短信控制手机之“短信开启定位”

    2019独角兽企业重金招聘Python工程师标准>>> 首先,我必须说,我是菜鸟.接触Android不就久,在这里记下,第一想让自己有更加深刻的印象,第二也想和大家一起分享.如果出现 ...

  3. Android学习之——APP番茄工作法——小结(1)

    2014-4-3补: 最近一直忘记回复:给位需要源码的,请到这里https://github.com/MrFuFuFu/TomatoTask  版本已经更新为1.0.1,且已在豌豆荚,应用宝,360手 ...

  4. Android 学习记录(持续更新)

    Android 学习记录(持续更新) 1.AndroidManifest.xml 详解: http://www.jb51.net/article/73731.htm (AndroidManifest. ...

  5. 【Monica的android学习之路】四大组件的生命周期

    [Monica的android学习之路]四大组件的生命周期 1. Service 1.1 启动service 1.1.1 startService 1.1.2 bindService 1.2 死亡回调 ...

  6. Android学习之手机传感器的获取

    首先声明:手机传感器的获取参考了网上一些其他人的CSDN博客,本文只是记录个人的学习状况 具体步骤: 框架: 1.创建Android工程(不使用默认的Activity,自己手动创建)名称:Sensor ...

  7. android学习笔记----ListView和各种适配器简介

    学习笔记 目录 打气筒(LayoutInflater对象)介绍: ArrayAdapter用法: 关于具有自定义 ArrayAdapter 的示例应用见这里: SimpleAdapter用法: 关于L ...

  8. Android学习日记 Notification 通知

    Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...

  9. Android学习笔记 93. Room、LiveData 和 ViewModel

    Android学习笔记 Android 开发者基础知识 (Java) -- Google Developers 培训团队 文章目录 Android学习笔记 Android 开发者基础知识 (Java) ...

  10. Android学习笔记之——获取WIFI的RSSI以及名称

    本博文为本人学习Android开发以来第一次实例编写.点击一个按钮,获取当前的wifi名称以及接受的信号强度. 目录 代码 定义界面 mainactivity 需要的权限 效果 参考资料 代码 首先创 ...

最新文章

  1. 完全基于Transformer的目标检测器,ICLR匿名论文实现视觉、检测统一
  2. html5 支持php标签吗,HTML5标签大全
  3. 细数改善WPF应用程序性能的10大方法
  4. FreeWheel是一家怎样的公司?| 人物志
  5. 关Jquery判断input type=checkbox元素是否被选中的判断
  6. 在Spring中使用JDBC访问关系数据
  7. [转载]了解Linux的进程与线程
  8. 【HDU 5384】Danganronpa(AC自己主动机)
  9. macbook m1 vmware fusion 安装centos8
  10. Visual Studio 2013新功能介绍
  11. C++程序设计案例实训教程第9章
  12. 萨鲁曼的军队 Saruman‘s Army(挑战程序设计竞赛)
  13. 奥运英语[5] 很高兴再次见到你 Good to see you again.
  14. C#简单开发的按键辅助
  15. 激光雷达:汽车智能化的最新“标签”
  16. 虚拟机VMware9上网设置
  17. System.out.println()快捷键
  18. JS写的数字拼图小游戏
  19. 18-Linux网络协议和管理
  20. 压缩软件历史--转载

热门文章

  1. 技能大赛 计算机 融合 研究,技能大赛与高职计算机教学的融合研究.doc
  2. mantis修改mysql端口_(功能篇)回顾Bug管理系统Mantis优化改造经历(示例代码)
  3. pythonxml库_Python XML操作
  4. java多线程访问beans对象_java-多线程同时操作同一个对象之解决方法:读写锁ReadWriteLock的使用...
  5. java double 存储_Java语言中:float、double在内存中存储方式
  6. 蓝桥杯2016年第七届C++省赛B组第五题-抽签
  7. Win10安装JDK与配置环境变量
  8. Linux-shell编程_xargs命令详解
  9. 20190528论文笔记
  10. KVM(二)CPU 和内存虚拟化