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