您的位置:首页 > 移动开发 > Android开发

Android学习 Context

2014-12-31 17:51 176 查看
参考自:http://www.cppblog.com/life02/archive/2012/03/19/168328.aspx

1.概述

什么是Context?Context字面意思上下文,很多方法需要通过Context才能识别调用者的实例,比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的实例为Activity,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,所以我们可能使用ActivityName.this来解决,主要原因是因为实现Context的类主要有Android特有的几个模型,Activity、Service以及BroadcastReceiver。

常规需要Context实例的方法主要有各种Service实现的类,比如说SensorManager在实例化时需要getSystemService(String)方法就必须由Context的实例执行,还有一些私有的文件系统I/O比如说openFileInput以及常用的Toast的makeText方法。

2.SDK中位置
java.lang.Object
   ↳android.content.Context

直接子类有:ContextWrapperMockContext

间接子类有:Activity、Service、BroadcastReceiver等

由于Activity Service等是Context的子类,因此获取的context类型除了为Context类型,也可以为Activity 、Service类型,如Activity mContext,(即多态,父类对象指向子类引用)

3.获取Context的几种方法
a)Application,获取当前整个Application的context
Context
context =
getApplicationContext();
b)Activity,获取当前运行的activity的context
Context context  = XXXActivity.this或直接this
c)Fragment,获取context
Context context = getActivity();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: