`
zhouxiaoli521
  • 浏览: 561548 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 

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

分享到:
评论

相关推荐

    Android Context与GetApplicationContext的区别及使用1

    【Android Context 与 GetApplicationContext 的区别及使用】 在Android开发中,Context是一个至关重要的概念,它扮演着应用程序组件与系统服务交互的关键角色。Context可以理解为应用运行时的上下文环境,提供了对...

    安卓Android源码——(Dialog对话框).rar

    在安卓开发中,Dialog对话框是一种常见的用户交互组件,它浮现在应用的主窗口之上,用于展示临时信息或...通过对Dialog源码的深入学习,我们可以更好地掌握Android UI设计的精髓,为用户提供更加贴近需求的交互体验。

    安卓Android源码——实现Notification的通知栏常驻.rar

    `点这里查看更多优质源码~.url`可能指向一个资源库,提供更多的学习材料和示例代码。 了解并掌握常驻通知的实现,对于开发者来说,不仅可以提升用户体验,也可以在消息传递和提醒方面发挥关键作用。同时,要注意...

    Android内存优化——常见内存泄露及优化方案.zip

    可以使用Application Context替代Activity Context,或者使用Android提供的`getApplicationContext()`方法。 3. **匿名内部类与监听器**:在匿名内部类中引用外部类的对象,如Activity,会导致内存泄露。可以使用...

    Android捕获异常处理——UncaughtExceptionHandler

    在Android开发中,异常处理是确保应用稳定性和用户体验的关键部分。`UncaughtExceptionHandler`是Android系统提供的一种机制,用于处理那些未被捕获的异常,即应用程序在运行时遇到无法处理的错误,导致程序即将崩溃...

    Android编程基础-实验报告三.doc

    ### Android编程基础——实验报告三知识点总结 #### 一、实验背景与目标 ...此外,关于Service的学习也让学生明白了如何在Android应用中管理和使用后台服务,这对于构建更加复杂和功能丰富的移动应用具有重要意义。

    ActivityShareData.rar

    描述提到了“Android 多个Activity之间共享类(数据)——Application Context”,这表明我们将讨论的是使用ApplicationContext来实现跨Activity数据共享的一种方法。 ApplicationContext是Android应用中的全局上...

    安卓上下文

    本文旨在深入解析安卓上下文的基本概念及其应用场景,并着重讨论两种类型的上下文——界面上下文(Activity Context)与应用上下文(Application Context)。 #### 二、界面上下文(Activity Context) ##### 1. 概念 ...

    android webview 中localStorage无效的解决方法

    String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath(); settings.setDatabasePath(dir); ``` 此外,设置App Cache也是很重要的,这有助于提高WebView的性能: ```java ...

    android不同activity之间共享数据解决方法

    3. **自定义Application类**:Android提供了一个全局的应用上下文(Application Context),它在应用程序的整个生命周期内都存在,可以用来存储全局状态。首先,创建一个自定义的Application类,继承自`Application`...

Global site tag (gtag.js) - Google Analytics