Context和Activity有什么区别?

时间:2012-12-14 02:28:17

标签: java android android-activity constructor android-context

  

可能重复:
  Difference between Activity Context and Application Context

何时使用Context和Activity。 我已经阅读了使用Context和Activity作为参数的代码,如下面的构造函数,请在这个

上清除我
public AmazedView(Context context, Activity activity) {
        super(context);

        mActivity = activity;

        // init paint and make is look "nice" with anti-aliasing.
        mPaint = new Paint();
        mPaint.setTextSize(14);
        mPaint.setTypeface(mFont);
        mPaint.setAntiAlias(true);

        // setup accelerometer sensor manager.
        mSensorManager = (SensorManager)                activity.getSystemService(Context.SENSOR_SERVICE);
        // register our accelerometer so we can receive values.
        // SENSOR_DELAY_GAME is the recommended rate for games
        mSensorManager.registerListener(mSensorAccelerometer, SensorManager.SENSOR_ACCELEROMETER,
                SensorManager.SENSOR_DELAY_GAME);

        // setup our maze and marble.
        mMaze = new Maze(mActivity);
        mMarble = new Marble(this);

        // load array from /res/values/strings.xml
        mStrings = getResources().getStringArray(R.array.gameStrings);

        // set the starting state of the game.
        switchGameState(GAME_INIT);
    }

3 个答案:

答案 0 :(得分:11)

Context:是系统的句柄。 Context包含环境数据,如本地文件,数据库,...上下文还包括许多系统服务。例如,Context将提供对Location Service的访问,...此外,通过上下文,您可以使用资源,访问数据库和首选项,本地数据......

Activity延伸来自Context。不仅Activity,还有许多其他人Context延伸,每个人都有自己的目的,例如:FragmentActivityServiceWallpaperServiceActivity,“普通”Android应用程序中的更多细节有活动。它就像是当前运行应用程序的环境的句柄。Activity可以创建UI(用户界面)

在上面的代码中,依赖在其他构造函数上,您应该将contextactivity对象放入其中。如您所见,如果activity取自同一context,您可以在构造函数中使用一个参数

public AmazedView(Context context) {
   Activity activity = (Activity) context;
}

但是你可以看到,它并不清楚,并且“隐藏”背后的真实物体。因为Activity是上下文的子类,所以以非正式的方式,Activity有一些上下文没有的“附加内容”。如果你把它作为上下文对象,没有人知道这个事实,并会使代码看起来模糊不清。此外,上下文可能来自Service,例如,您不确定何时将类型转换为Activity。所以,这里有两个参数适合。

希望这可以帮到你:)

答案 1 :(得分:5)

应用程序上下文是指应用程序环境及其中的进程 它的所有组件都在运行。它允许应用程序共享数据和资源 每当构建此应用程序的第一个组件时,无论该组件是活动,服务还是其他内容,都会创建应用程序上下文。只要您的应用程序处于活动状态,应用程序上下文就会生效。因此,它独立于活动生命周期。您可以轻松获得对上下文的引用 调用

  Context.getApplicationContext() or Activity.getApplication()

请记住,活动和服务已经是上下文的子类,因此它们会继承 所有方法。

活动通常是用户一次在设备上看到的单个屏幕。一个 应用程序通常有多个活动,用户来回翻转 他们。因此,活动是应用程序中最明显的部分。

你也可以看一下:What is 'Context' on Android?

答案 2 :(得分:1)

在android的开发者页面上: http://developer.android.com/reference/android/content/Context.html 它说:

“[上下文是]一个关于应用程序环境的全局信息的接口。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及上调用于应用程序级操作,例如启动活动,广播和接收意图等。“

Activity是Context的间接子类,如页面所述。