getApplicationContext()、getBaseContext()和Activity.this区别

普通的Android应用程序中,通常有两种Context,Application和Activity,也即getApplicationContext()和Activity的this。

getApplicationContext() 返回应用的上下文,生命周期对应整个应用。若应用销毁,context销毁。【总体来说,使用全局应用程序Context可能是最好的】

Activity.this的context 返回当前activity的上下文,生命周期对应Activity。若activity销毁(比如横竖屏切换等情况),context也会被销毁多次。

getBaseContext() 返回由构造函数指定或setBaseContext()设置的上下文。例如

public Dialog displayDialog(int choice)
    {
    switch(choice){
    case 0:
    AlertDialog aDialog = new AlertDialog.Builder(this)
    .setIcon(R.drawable.ic_launcher)
    .setTitle("Hello World")
    .setPositiveButton("OK", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(), "OK clicked", Toast.LENGTH_SHORT).show();
}
}).......
这里getBaseContext()返回的是AlertDialog构造函数指定的context,此处不能用this代替,因为上面的this返回的是整个Activity对象对应context,而如果在onClick函数中使用this返回的是AlertDialog的context。


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值