Activity.this与getApplicationContext()在应用上的不同
Activity.this与getApplicationContext()在应用上的不同
公子彦 发表于2年前
Activity.this与getApplicationContext()在应用上的不同
  • 发表于 2年前
  • 阅读 5
  • 收藏 0
  • 点赞 1
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: Activity.this getApplcationContext() AlertDialog

今天在写一个小例子的时候,其中用到了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()却不能。

共有 人打赏支持
粉丝 3
博文 9
码字总数 6260
×
公子彦
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: