Activity.this与getApplicationContext()在应用上的不同

今天在写一个小例子的时候,其中用到了new AlertDialog.Bulider(XXXXX).setTitle("title").setMessage(mag).show

括号里面我用的是getApplicationContext()来获取当前activity的名称,结果运行程序的时候一直出错。

经过一个小时的排除,终于找到了错误原因,结果是括号里应该用Activity.this(假设Activity为当前activity名称)

为什么呢?

根据我在网上查到的资料,在这里简单总结一下。

1、首先我们需要知道AlertDialog.Bulider()括号里传入的应该是当前语句所在的Activity,而AlertDialog是依赖于一个View的,也就是说,它在这里仅存在一个activity周期。

2、下面我们看一下getApplicationContext()和activity.this,getApplicationContext()得到的是整个应用的生命周期,所以虽然它拿到的也是当前Activity,但是当前activity结束时,也许还有其他activity存在,getApplicationContext()并不会随之销毁。而activity.this则是仅存在于当前activity的这一个生命周期中。

由此可以看出,在两者的使用过程中还需要注意activity的生命周期问题。所以,activity.this可以用在AlertDialog中

,getApplicationcontext()却不能。

你可能感兴趣的:(Activity.this与getApplicationContext()在应用上的不同)