zoukankan      html  css  js  c++  java
  • Android中Activity.this,getApplicationContext(),getBaseContext()和this详解

    转自:http://android.tgbus.com/Android/tutorial/201103/346236.shtml

    在使用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()。

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

  • 相关阅读:
    2018年NGINX最新版高级视频教程
    PHP 高级工程面试题汇总
    2018年最全Go语言教程零基础入门到进阶实战视频
    Mac和window生成ssh和查看ssh key
    33款可用来抓数据的开源爬虫软件工具
    什么是CMS系统
    对于做需求分析时的一些心得
    WPF和Silverlight的关系
    My97日期控件 My97 DatePicker Ver 3.0 正式版(转)
    HTML教程HTML技巧层的高级应用
  • 原文地址:https://www.cnblogs.com/xym4869/p/8477643.html
Copyright © 2011-2022 走看看