Context和Acitivity有什么区别?

amj*_*amj 3 java android constructor android-context android-activity

可能重复:
活动上下文和应用程序上下文之间的差异

何时使用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);
    }
Run Code Online (Sandbox Code Playgroud)

hqt*_*hqt 12

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

Activity:延伸Context.而且不只是Activity,许多人伸出Context,并且每个人都有自己的目的,如:FragmentActivity,Service,WallpaperService.更多细节Activity,"普通"Android应用程序有活动.它就像是当前运行应用程序的环境的句柄.Activity可以创建UI(用户界面)

在上面的代码中,取决于其他构造函数,你应该放入contextactivity反对.如您所见,如果activity来自同一个context,您可以在构造函数中使用一个参数

public AmazedView(Context context) {
   Activity activity = (Activity) context;
}
Run Code Online (Sandbox Code Playgroud)

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

希望这对你有所帮助:)


Mah*_*eie 5

应用程序上下文是指应用程序环境以及运行其所有组件的进程.它允许应用程序在各种构建块之间共享数据和资源.每当启动此应用程序的第一个组件时,无论该组件是活动,服务还是其他内容,都会创建应用程序上下文.应用程序上下文的存在时间与你的申请还活着.因此,它独立于活动生命周期.您可以通过调用轻松获取对上下文的引用

  Context.getApplicationContext() or Activity.getApplication()
Run Code Online (Sandbox Code Playgroud)

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

活动通常是用户一次在设备上看到的单个屏幕.应用程序通常具有多个活动,并且用户在它们之间来回切换.因此,活动是应用程序中最明显的部分.

您还可以看一下:Android上的"上下文"是什么?