android如何传context

2025-05-19 23:01:51
推荐回答(2个)
回答1:

  很多初入Android开发的网友向我们问到Context有什么作用,很多地方都用到它,这里Android123给这些新入门的网友做个简单的解释:
  
  Context字面意思上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄,很多方法需要通过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:

  Android系统传递Context有多种方式,以下分类进行讲解:

  1、在同一个Activity中,传递Context可以直接通过Activity.this获得当前Activity传递的Context。或者通过getAppicaionContext获得Application传递的Context。
  2、在View中获得Context,可以直接通过getContext获得,由Activty在attachView后传递过来的Context。
  3、在其他类中,可以由参数进行传递,比如dialog初始化需要传递Context,这样便可以在类中接收到。

  需要说明的是,不同的Activity中的Context是不同的,每个Activity有自己的Context对象,所以不应该在Activity中使用其他Activity的Context。