Activity.this和this.getApplictionContext的区别

来源:互联网 发布:搞怪视频软件 编辑:程序博客网 时间:2024/06/07 19:06

Activity.this和this.getApplictionContext的区别

如果需要当前窗体弹出对话框时:如

AlertDialog.Builder builder = new AlertDialog.Builder(this); 

这里要求传递的参数就是一个context,在这里传入的this究竟指的是Activity.this和还是this.getApplictionContext呢?

其实这里的this指的是Activity.this,这是为什么呢?首先分析两者的区别:1.Activity.this指代的是当前所在的Activity的this,是这个Activity的上下文。2.this.getApplictionContext指的是当前的应用,,就表示应用程序的生命周期。

所以这里使用this.getApplicationContext(),是不对的。
AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。
这里涉及到一个生命周期的问题,
this.getApplicationContext()取的是这个应用程序的Context,
Activity.this取的是这个Activity的Context,
这两者的生命周期是不同的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。
而AlertDialog是属于Activity的,在Activity销毁的时候它也就销毁了,不会再存在;
但是,如果传入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它的生命周期了。
所以,在这里我们只能使用Activity的this。

0 0
原创粉丝点击