android学习—— context 和 getApplicationContext()
在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()相关推荐
- Android学习--还有一些小技巧
这些小技巧 通过上面的这些文章,就把简单的安卓项目总结了一遍,当然你说懂这些就可以做Android开发的话还是不行的,欠缺的还有很多,但欠缺的这些我们有只能在工作中去总结以及不断的提高,这篇文章我们还 ...
- Android学习笔记:短信控制手机之“短信开启定位”
2019独角兽企业重金招聘Python工程师标准>>> 首先,我必须说,我是菜鸟.接触Android不就久,在这里记下,第一想让自己有更加深刻的印象,第二也想和大家一起分享.如果出现 ...
- Android学习之——APP番茄工作法——小结(1)
2014-4-3补: 最近一直忘记回复:给位需要源码的,请到这里https://github.com/MrFuFuFu/TomatoTask 版本已经更新为1.0.1,且已在豌豆荚,应用宝,360手 ...
- Android 学习记录(持续更新)
Android 学习记录(持续更新) 1.AndroidManifest.xml 详解: http://www.jb51.net/article/73731.htm (AndroidManifest. ...
- 【Monica的android学习之路】四大组件的生命周期
[Monica的android学习之路]四大组件的生命周期 1. Service 1.1 启动service 1.1.1 startService 1.1.2 bindService 1.2 死亡回调 ...
- Android学习之手机传感器的获取
首先声明:手机传感器的获取参考了网上一些其他人的CSDN博客,本文只是记录个人的学习状况 具体步骤: 框架: 1.创建Android工程(不使用默认的Activity,自己手动创建)名称:Sensor ...
- android学习笔记----ListView和各种适配器简介
学习笔记 目录 打气筒(LayoutInflater对象)介绍: ArrayAdapter用法: 关于具有自定义 ArrayAdapter 的示例应用见这里: SimpleAdapter用法: 关于L ...
- Android学习日记 Notification 通知
Android学习日记 Notification 通知 文章目录 Android学习日记 Notification 通知 前言 使用步骤 总结 前言 下拉状态栏显示的通知功能 使用步骤 代码如下: p ...
- Android学习笔记 93. Room、LiveData 和 ViewModel
Android学习笔记 Android 开发者基础知识 (Java) -- Google Developers 培训团队 文章目录 Android学习笔记 Android 开发者基础知识 (Java) ...
- Android学习笔记之——获取WIFI的RSSI以及名称
本博文为本人学习Android开发以来第一次实例编写.点击一个按钮,获取当前的wifi名称以及接受的信号强度. 目录 代码 定义界面 mainactivity 需要的权限 效果 参考资料 代码 首先创 ...
最新文章
- 完全基于Transformer的目标检测器,ICLR匿名论文实现视觉、检测统一
- html5 支持php标签吗,HTML5标签大全
- 细数改善WPF应用程序性能的10大方法
- FreeWheel是一家怎样的公司?| 人物志
- 关Jquery判断input type=checkbox元素是否被选中的判断
- 在Spring中使用JDBC访问关系数据
- [转载]了解Linux的进程与线程
- 【HDU 5384】Danganronpa(AC自己主动机)
- macbook m1 vmware fusion 安装centos8
- Visual Studio 2013新功能介绍
- C++程序设计案例实训教程第9章
- 萨鲁曼的军队 Saruman‘s Army(挑战程序设计竞赛)
- 奥运英语[5] 很高兴再次见到你 Good to see you again.
- C#简单开发的按键辅助
- 激光雷达:汽车智能化的最新“标签”
- 虚拟机VMware9上网设置
- System.out.println()快捷键
- JS写的数字拼图小游戏
- 18-Linux网络协议和管理
- 压缩软件历史--转载
热门文章
- 技能大赛 计算机 融合 研究,技能大赛与高职计算机教学的融合研究.doc
- mantis修改mysql端口_(功能篇)回顾Bug管理系统Mantis优化改造经历(示例代码)
- pythonxml库_Python XML操作
- java多线程访问beans对象_java-多线程同时操作同一个对象之解决方法:读写锁ReadWriteLock的使用...
- java double 存储_Java语言中:float、double在内存中存储方式
- 蓝桥杯2016年第七届C++省赛B组第五题-抽签
- Win10安装JDK与配置环境变量
- Linux-shell编程_xargs命令详解
- 20190528论文笔记
- KVM(二)CPU 和内存虚拟化