最近看到ListView,有用到适配器ArrayAdapter(context,textViewResourceId,T[]obj),看网上说context是上下文,我也知道是上下文。。。但是这样还是没能解释清。求大牛指点下,context在这里的意义,我看书上一搬都赋值MainActivity.this。这方法我按书上敲了好多次,就是理解不来,求指点
在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的参数就是一个context,在这里传入的是this,那么这个this究竟指的是什么东东呢? 这里的this指的是Activity.this,是当前这个Activity 的上下文(Context)。
网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。为什么? AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是整个应用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它 的生命周期了。
所以,在这里只能使用Activity的this。 差别就是不同的生命周期。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。