由AlertDialog和Toast学到的this和getApplicationContext的区别

1、AlertDialog是一个信息提示框,能够和用户进行交互。

2、Toast也是一个信息提示框,出现后会更具设定的时间,自动消失。


AlertDialog的使用,注意注释掉的语句

public void onClick(View v) {
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
             //   AlertDialog.Builder dialog = new AlertDialog.Builder(getApplicationContext());
                dialog.setTitle("标题");
                dialog.setMessage("我是一个弹出框");
                dialog.show();

            }
Toast的使用

 Toast.makeText(getApplicationContext(),"我是一个toast",Toast.LENGTH_SHORT).show();
 Toast.makeText(MainActivity.this,"我是一个toast",Toast.LENGTH_SHORT).show();
在上面的两个代码块中,AlertDialog中应用getApplicationContext则直接报错。

由此,网上查资料,查到了this,和getApplicationContext()的区别:

1:getApplicationContext()取到的是这个应用程序的Context,其生命周期在整个应用程序存在都存在,应用销毁,它才销毁

2:this:代表当前,在Activity当中就是代表当前的Activity,换句话说就是Activity.this在Activity当中可以缩写为this;Activity.this,代表的是当前Actiity的context.其生命周期随着当前Activity销毁而消失。

3:能用getApplicationContext()的地方,百分之百能用this  或Activity.this,但是反过来不一定成功。比如AlertDialog的只能使用this或者Activity.this。因为AlertDialog依赖于一个具体View。但是Toast没有此强制要求,所以Toast中可以用getApplicationContext()或者Activity.this 或this。作为Context的参数传递。

结论:

1:和UI操作相关的不建议使用getApplicationContext(),一般都是用和Activity相关的Context.:

2:Android Service中没法直接使用AlertDialog


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值