android 中窗体溢出(android.view.WindowLeaked)

1.Activity 的生命周期与 Dialog 的不同 AlertDialog.Builder builder=new AlertDialog.Builder(context);android

 2.这个context 是Activity的上下文 3.Dialog 要在Activity 销毁前 dismiss()掉,否则就窗体溢出ui

 在android中经常会遇到与context有关的内容,特写下这篇blog,浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的 参数就是一个context,在这里咱们传入的是this,那么这个this究竟指的是什么东东呢? 这里的this指的是Activity.this,是这个语句所在的Activity的this,是这个Activity 的上下文。网上有不少朋友在这里传入this.getApplicationContext(),这是不对的。 AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 因而,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是这个应 用程序的Context,Activity.this取的是这个Activity的Context,这二者的生命周期是不一样 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应 该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;可是,若是传 入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它 的生命周期了。 因此,在这里咱们只能使用Activity的this。 差异就是表明着不一样的生命周期吧。this

相关文章
相关标签/搜索