打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android中Activity.this,getApplicationContext(),getBaseContext()和this详解

    在使用Android上下文参数的时候经常分不清Activity.this(这里的Activity代指Activity类,也就是你需要使用context参数的那个Activity,例如:MainActivity),getApplicationContext()和getBaseContext(),经过谷歌查询,终于算是有些明白了,这里记下来,备忘,也希望能帮助更多的人。

    首先说一下生命周期上的区别。

  1. getApplicationContext()返回的是你的整个Application的context,生命周期是整个Application,Application销毁后,它才销毁。
  2. Activity.this的context属于Activity,生命周期与Activity相同,随着当前的Activity.this消亡而消亡。
  3. getBaseContext()返回由构造函数指定或者setBaseContext()设置的上下文(谷歌工程师不建议使用)。
  4. this放在哪里边就是谁的指针,如果在Activity中就是Activity,这时等同于Activity.this;如果放在OnCliclListener()中就是OnClickListener()。

    接下来说说怎么使用getApplicationContext()和Activity.this。

    根据你的控件的生命周期决定传Activity.this还是getApplicationContext(),如果你的控件的生命周期是整个应用,就传送getApplicationContext(),如果是当前的Activity,就传送Activity.this。

    以AlertDialog为例,AlertDialog的对象是依赖于View的,View是和具体的Activity相关的,如果Activity消亡了,则View也不存在,所以需要传入Activity.this而不是getApplicationContext()。

    综上所述:最简单的方法是根据控件的生命周期决定传什么参数

参考资料:

  1. 点击打开链接
  2. 点击打开链接
  3. 点击打开链接
  4. 点击打开链接

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android上下文
android中使用Application实现全局变量
Android中Activity共享变量的另一方法:Application context
Android Java Framework显示Toast(无Activity和Servi...
Android全局对象Application的使用,以及如何在任何地方得到Application全局对象
Android Context 上下文 你必须知道的一切
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服