android上下文
在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 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
- Android 判断手机是32位CPU还是64位CPU android.os.Build类字段含义
- Android studio 2.0--android增量更新的那些事
- android:Cordova Android, hello Cordova ,PhoneGap android
- android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
- Android 反调试技巧之Self-Debuging/proc 文件系统检测、调试断点探测
- [Android应用]《花界》V1.0 正式版隆重发布!
- 【Android】保存Fragment切换状态
- Android---- 获取当前应用的版本号和当前android系统的版本号
- 实现Android Studio JNI开发C/C++使用__android_log_print输出Log
- Android自定义SeekBar
- Android 服务类Service 的详细学习
- android 实现跳动频谱 DEMO
- android编译系统的makefile文件Android.mk写法如下
- 【VLC-Android】vlc-android简例
- Android Fragment 基本介绍
- Android权限设置android.permission完整列表
- Android 检测网络连接状态
- android开发:Android 中自定义View的应用
- 什么是Android FrameWork,请你介绍一下?
- Android图表控件MPAndroidChart——曲线图LineChart的使用(财富收益图)
- Android 串口通信基于licheedev和android-serialport两种方案实现附Demo
- android studio 3.1.4下载安装配置(附旧版本下载地址)
- android 小技术点汇总
- android sdk更新代理设置
- Android IPC机制(四)用ContentProvider进行进程间通信
- Android学习之手机震动
- Android学习笔记之:android更新ui的几种经常用法
- Android开发:Eclipse中SqliteManager插件使用
- Android回调事件传播-android学习之旅(四十五)
- Android bluetooth介绍(两): android 蓝牙源架构和uart 至rfcomm过程
- [Android] android:visibility属性应用
- 【Android Studio报错】:Failed to read key AndroidDebugKey from store “C:Users13181.androiddebug.keys