android中this、Activity.this、context区别与联系

参考博文:http://www.cnblogs.com/wenjiang/archive/2012/10/15/2724923.html

Context的类型有两种,一种是Activity-Context,另一种是Application-Activity,这两种的区别就在于它们的生命周期不一样,一个是随着Activity的销毁而销毁,另一个是伴随整个Application。
Context作为一个抽象的基类(??待验证),它的实现子类有三种:Application、Activity和Service(估计这么说,暂时不管ContextWrapper等类)。

private Context mContext;

mContext = FavoritesSongActivity.this;

intent.setClass(mContext, LocalActivity.class);

btn_local.setOnClickListener(this);

根据打印出来的哈希值我们可以明显看出这三者是一样的,都是指这个LocalActivity中唯一的上下文Context,而这个上下文Context是与整个应用程序的上下文Context是不一样的,他们的生命周期是不同的,Activity中的上下文Context是随着活动的产生而产生,随其消亡而消亡,但是整个应用程序的上下文Context这是伴随着整个应用程序而存在的,无论活动的存活与否都影响不到这个上下文。
获取整个应用程序上下文可通过this.getApplicationContext()来获取。 记得还要在manifast里把application的name属性改成你的这个类名~(此句摘自网络,待验证);
获取当前活动的上下文可以通过在一个Activity中使用this就可以获得当前Activity的Context。
Log.d(TAG, "mContext = " + mContext.hashCode());
Log.d(TAG, "this= " + this.hashCode());
Log.d(TAG, " LocalActivity .this= " + LocalActivity .this.hashCode());


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值