Java 上下文和活动之间的区别是什么?

Java 上下文和活动之间的区别是什么?,java,android,android-activity,constructor,android-context,Java,Android,Android Activity,Constructor,Android Context,可能重复: 何时使用上下文和活动。 我已经阅读了使用上下文和活动作为构造函数参数的代码,如下所示,请澄清我的问题 public AmazedView(Context context, Activity activity) { super(context); mActivity = activity; // init paint and make is look "nice" with anti-aliasing. mPaint

可能重复:

何时使用上下文和活动。 我已经阅读了使用上下文和活动作为构造函数参数的代码,如下所示,请澄清我的问题

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);
    }

在android的开发者页面上: 它说:

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


活动是上下文的一个间接子类,如本页所述。

应用程序上下文指的是应用程序环境和流程,其中 它的所有组件都在运行。它允许应用程序共享数据和资源 在各种构建块之间。每当启动此应用程序的第一个组件时,无论该组件是活动、服务还是其他组件,都会创建应用程序上下文。只要应用程序处于活动状态,应用程序上下文就会一直存在。因此,它独立于活动生命周期。您可以通过以下方式轻松获得对上下文的引用: 召唤

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

活动通常是用户一次在设备上看到的单个屏幕。一 应用程序通常有多个活动,用户在这些活动之间来回切换 他们。因此,活动是应用程序中最可见的部分


您还可以查看以下内容:

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

活动
上下文扩展。不仅是
活动
,还有许多其他活动扩展了
上下文
,并且每个活动都有自己的目的,例如:
片段活动
服务
壁纸服务
。更多详情请参见
活动
,“普通”android应用程序有活动。它就像是应用程序当前运行环境的句柄<代码>活动
可以创建UI(用户界面)

在上面的代码中,依赖于其他构造函数,您应该将
上下文
活动
对象放入。如您所见,如果
活动
来自同一
上下文
,则可以在构造函数中使用一个参数

public AmazedView(Context context) {
   Activity activity = (Activity) context;
}
但你们可以看到,它并不清晰,而且“隐藏”了真实的物体。因为
Activity
是上下文的子类,所以以一种非正式的方式,
Activity
有一些上下文没有的“附加内容”。如果将其作为上下文对象,则没有人知道这一事实,并且会使代码看起来晦涩难懂。此外,例如,上下文可能来自
服务
,您将无法确定何时将类型转换为
活动
。所以,这里有两个合适的参数

更重要的是,您应该小心地将活动用作上下文对象,因为它可能会导致内存泄漏

是@a--C,但我这里的问题基本上是为什么我们在构造函数中同时需要活动和上下文?这里如何使用活动?
public AmazedView(Context context) {
   Activity activity = (Activity) context;
}