首页 > 编程开发 > Android开发 > Android中Activity.this和getApplicationContext()的区别和选择
2016
05-17

Android中Activity.this和getApplicationContext()的区别和选择

在Android中常常会遇到传入Context给某个方法的情况,比如

要求传递的参数就是一个context,在这里我们传入的是this,就代表当前的Activity,即Activity.this。

既然需要context,为什么这里不写getApplicationContext()呢?这和它们的生命周期有关。getApplicationContext() 取的是这个应用程序的Context,生命周期是整个应用,而Activity.this取的是这个Activity的Context,它的生命周期相信大家都很清楚。

在该例中,AlertDialog应该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传入getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它的生命周期了。 所以,在这里我们只能使用Activity的this。

明白了以上的原理,可以总结出,和UI操作相关的不建议使用getApplicationContext(),一般都使用和Activity相关的context,如:View、Dialog等。其余的情况,都是建议使用getApplicationContext()。

下面一张图片可供参考:

Android中Activity.this和getApplicationContext()的区别和选择 - 第1张  | 扩软博客

参考地址:android中用getApplicationContext()会不会避免某些内存泄漏问题?

context和getApplicationContext()介绍

最后编辑:
作者:
百度ID:“度娘程序员”,博主。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

Android中Activity.this和getApplicationContext()的区别和选择》有 1 条评论

  1. Firefox 53.0Firefox 53.0Windows 8.1 x64Windows 8.1 x64

    Maxisize是含有乳剂成分的酶,有助于阴茎的组织,伸缩自如,阴茎的厚度和长度会在使用这产品后有所改变和增强。使用这个乳剂后,您可能得到硬邦邦的阴茎。若您使用maxisize,阴茎便会轻易地增长5公分。若您有兴趣得到最佳效果,您可以在性交的半个小时前把这乳剂涂在阴茎上。这个产品会让阴茎变得更长,更粗。您可以利用这种阴茎增强霜来得到了不起的成绩。若您在使用后得到满意的效果,您就可以为所欲为。 maxisize-cn.com

发表回复

你的邮箱地址不会被公开,垃圾评论将被删除。

有人回复时邮件通知我