getApplicationContext()返回应用的上下文,生命周期是整个应用,应用退出它才被摧毁

Activity.this 返回当前activity的上下文,属于activity ,activity destory,它也被摧毁

getBaseContext()  the base context as set by the constructor or setBaseContext

Context

public abstract Context getApplicationContext ()

  Return the context of the single, global Application object of the current process. This generally should only be used if you

need a Context whose lifecycle is separate from the current context, that is tied to the lifetime of the process rather than the

current component.

Consider for example how this interacts with registerReceiver(BroadcastReceiver, IntentFilter):

  • If used from an Activity context, the receiver is being registered within that activity. This means that you are expected to

unregister before the activity is done being destroyed; in fact if you do not do so, the framework will clean up your leaked

registration as it removes the activity and log an error. Thus, if you use the Activity context to register a receiver that is

static (global to the process, not associated with an Activity instance) then that registration will be removed on you at whatever

point the activity you used is destroyed.

  • If used from the Context returned here(getApplicationContext), the receiver is being registered with the global state associated

with your application.Thus it will never be unregistered for you. This is necessary if the receiver is associated with static data, not a

particular component.However using the ApplicationContext elsewhere can easily lead to serious leaks if you forget to unregister, unbind, etc.

  AlertDialog.Builder builder = new AlertDialog.Builder(this)中,要求传递的参数就是一个context,在这里我们传入的是当前Activity。

AlertDialog应该是属于当前Activity的,在Activity销毁的时候它也就销毁了,但是,如果传入this.getApplicationContext(),就表示它的生命周期是整个

应用程序,这显然超过了它的生命周期了。所以,在这里我们只能使用当前Activity

1.dialog = ProgressDialog.show(getBaseContext(), "", "正在刷新好友列表");

出错:Unable to add window -- token null is not for an application

getApplicationContext()、Activity.this、 getBaseContext区别的更多相关文章

  1. android开发中的 Activity 与 Context 区别与联系

    Context 是 Application /Activity /Service的基类 Intent(Context , Class); Activity中的上下文Context是随着活动的产生而产生 ...

  2. context和getApplicationContext()的区别

    在android中常常会遇到与context有关的内容 浅论一下 context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder ...

  3. activity启动模式区别和优化

    初学android的开发人员,可能会经常忽略这个重要的设置. Activity一共有以下四种launchMode:1.standard2.singleTop3.singleTask4.singleIn ...

  4. 【安卓面试题】在一个Activity启动另一个Activity和在Service中启动一个Activity有什么区别

    在Activity中可以直接使用Intent启动另一个Activity 显式Intent intent = new Intent(context, activity.class) 隐式 Intent ...

  5. FragmentActivity和Activity的具体区别在哪里

    fragment是3.0以后的东西,为了在低版本中使用fragment就要用到android-support-v4.jar兼容包,而fragmentActivity就是这个兼容包里面的,它提供了操作f ...

  6. android ApplicationContext Context Activity 内存的一些学习

    Android中context可以作很多操作,但是最主要的功能是加载和访问资源. 在android中有两种context,一种是application context,一种是activity cont ...

  7. Android 如何利用Activity的Dialog风格完成弹出框设计

    在我们使用Dialog时,如果需要用到很多自己设计的控件,虽然可以让弹出框显示出我们需要的界面,但却无法找到地方完成控制代码的编写,如何解决这个问题呢,我们可以将Activity伪装成Dialog弹出 ...

  8. Activity 的 36 大难点,你会几个?「建议收藏」

    前言 学 Android 有一段时间了,一直都只顾着学新的东西,最近发现很多平常用的少的东西竟让都忘了,趁着这两天,打算把有关 Activity 的内容以问题的形式梳理出来,也供大家查缺补漏. 本文中 ...

  9. Activity 的 36 大难点,你会几个

    前言 学 Android 有一段时间了,一直都只顾着学新的东西,最近发现很多平常用的少的东西竟让都忘了,趁着这两天,打算把有关 Activity 的内容以问题的形式梳理出来,也供大家查缺补漏. 本文中 ...

随机推荐

  1. avrdude: stk500_getsync(): not in sync: resp=0x00

    avrdude: stk500_getsync(): not in sync: resp=0x00错误提示在arduino IDE中非常常见,这个错误代表着就是无法通过USB口与arduino控制板进 ...

  2. 你有自己的Web缓存知识体系吗?

    赵舜东 江湖人称赵班长,曾在武警某部负责指挥自动化的架构和运维工作,2008年退役后一直从事互联网运维工作.曾带团队负责国内某电商的运维工作,<saltstack入门与实践>作者,某学院高 ...

  3. Scala + Play + Sbt + Protractor = One Build

    欢迎关注我的新博客地址:http://cuipengfei.me/ 我所在的项目的技术栈选用的是Play framework做后端API,前端用Angular JS. 因为用了Scala和Play,构 ...

  4. TensorFlow基础笔记(6) 图像风格化实验

    参考 http://blog.csdn.net/wspba/article/details/53994649 https://www.ctolib.com/AdaIN-style.html Ackno ...

  5. 【BZOJ】1670: [Usaco2006 Oct]Building the Moat护城河的挖掘(凸包)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1670 裸打了凸包.. #include <cstdio> #include <cs ...

  6. Kivy: 用于NUI开发的跨平台Python框架

    http://top.jobbole.com/9915/ http://kivy.org/

  7. Loadrunner_http长连接设置

    最近协助同事解决了几个问题,也对loadrunner的一些设置加深了理解,关键是更加知其所以然. ljonathan http://www.51testing.com/html/48/202848-2 ...

  8. 【LDA】nlp

    http://pythonhosted.org/lda/getting_started.html http://radimrehurek.com/gensim/

  9. word excel文件 存入数据库 实战

    上传: private void Insert2017(HttpContext context) { if (context.Request.Files["fileword"].C ...

  10. ios 对日期的处理(包括计算昨天时间、明天时间)

    NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间 Dates NSDate类提供了创建date,比较date以及计算两个date之间间隔的功能.Date对象是不可改变的. 如 ...