Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
2013-12-28 19:40
393 查看
在使用Android上下文参数的时候经常分不清Activity.this(这里的Activity代指Activity类,也就是你需要使用context参数的那个Activity,例如:MainActivity),getApplicationContext()和getBaseContext(),经过谷歌查询,终于算是有些明白了,这里记下来,备忘,也希望能帮助更多的人。
首先说一下生命周期上的区别。
getApplicationContext()返回的是你的整个Application的context,生命周期是整个Application,Application销毁后,它才销毁。
Activity.this的context属于Activity,生命周期与Activity相同,随着当前的Activity.this消亡而消亡。
getBaseContext()返回由构造函数指定或者setBaseContext()设置的上下文(谷歌工程师不建议使用)。
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()。
综上所述:最简单的方法是根据控件的生命周期决定传什么参数。
参考资料:
点击打开链接
点击打开链接
点击打开链接
点击打开链接
首先说一下生命周期上的区别。
getApplicationContext()返回的是你的整个Application的context,生命周期是整个Application,Application销毁后,它才销毁。
Activity.this的context属于Activity,生命周期与Activity相同,随着当前的Activity.this消亡而消亡。
getBaseContext()返回由构造函数指定或者setBaseContext()设置的上下文(谷歌工程师不建议使用)。
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()。
综上所述:最简单的方法是根据控件的生命周期决定传什么参数。
参考资料:
点击打开链接
点击打开链接
点击打开链接
点击打开链接
相关文章推荐
- Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
- Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
- Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
- Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
- Android中Activity.this,getApplicationContext(),getBaseContext()和this详解
- Android:getApplicationContext()、Activity.this、 getBaseContext()区别
- Android 中几个Context的区别,getApplicationContext(),Activity.this,getBaseContext()
- Android上下文——两种上下文的对比 getApplicationContext()与Activity.this的浅认识
- getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this
- getApplicationContext()、Activity.this、 getBaseContext区别
- getApplicationContext()、Activity.this、 getBaseContext区别
- getApplicationContext()、Activity.this、 getBaseContext区别
- android getContext() , getApplicationContext() , getBaseContext() and “this”
- android中获取context的多种方法的区别(this,getbasecontext(),getApplicationcontext())
- Android中的context使用(getApplicationContext和Activity.this的区别和使用)
- getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之间的区别
- getApplicationContext()、Activity.this、 getBaseContext区别
- Context 的作用、getApplicationContext()、Activity.this、 getBaseContext区别 和 Application用途
- Andorid开发(二十二)——获取上下文getApplicationContext()、Activity.this、 getBaseContext
- getApplication()、getApplicationContext()、getBaseContext()、MainActivity.this、this、getContext()之间的区别