在Android编程中,Context类到底是什么?它用于什么?
我在开发者网站上读过这篇文章,但我无法清楚地理解它。
在Android编程中,Context类到底是什么?它用于什么?
我在开发者网站上读过这篇文章,但我无法清楚地理解它。
当前回答
上下文表示获取环境数据的句柄。上下文类本身声明为抽象类,其实现由android OS提供。上下文就像电视的远程&电视中的频道是资源、服务等。
你能用它做什么?
正在加载资源。启动新活动。创建视图。正在获取系统服务。
获取上下文的方法:
getApplicationContext()获取上下文()getBaseContext()
其他回答
将Context视为具有不同资源的框:字符串、颜色和字体。如果您需要资源,请转到此框。旋转屏幕时,此框会发生变化,因为方向会变为横向。
如果您查看的评论https://stackoverflow.com/a/16301475/1772898,你会看到ulf edholm的评论
嗯,对我来说,这一切听起来就像我们老前辈过去所说的全局变量,当对象定向进入场景时,这是非常令人反感的
他是对的。上下文是全局变量的替代。
为了简单起见,我们可以说:全局变量≈上下文
上下文相对于全局变量的好处是,全局变量使得不可能在同一进程中创建同一系统的两个独立实例,而上下文允许系统的多个实例在单个进程中共存,每个实例都有自己的上下文。
请查看John Ousterhout的《软件设计哲学》,7.5传递变量。
全局变量使得无法创建两个独立变量同一进程中同一系统的实例,因为访问全局变量将发生冲突。...我最常用的解决方案是引入上下文对象,如图7.2(d).上下文存储应用程序的所有全局状态(否则将是传递变量或全局变量变量)。大多数应用程序的全局变量中都有多个变量状态,表示配置选项、共享子系统和性能计数器。每个有一个上下文对象系统的实例。上下文允许系统在单个进程中共存,每个进程都有自己的上下文。
稍后在评论部分,您将看到比约恩的另一条评论
如果你只是grep一个代码库,你会看到数百个不同的getContext,getBaseContext,getBlaBlaContext。
他也是对的。
为了减少必须了解上下文的方法的数量,在许多主要对象中都引用了对上下文的引用。这就是为什么会看到getContext、getBaseContext、getBlaBlaContext。。在这么多地方。
参考资料:John Ousterhout的《软件设计哲学》,7.5传递变量。
不幸的是,许多地方可能需要上下文,因此它可能会成为传递变量。为了减少必须知道的方法的数量,对上下文的引用可以保存在系统的大多数主要对象中。在以下示例中图7.2(d),包含m3的类存储对上下文作为其对象中的实例变量。当新对象create方法从其对象,并将其传递给新对象的构造函数。用这个方法,上下文在任何地方都可用,但它只显示为构造函数中的显式参数。
Context是应用程序/对象当前状态的上下文。它是表示各种环境数据的实体。上下文帮助当前活动与外部android环境交互,如本地文件、数据库、与环境相关的类加载器、包括系统级服务在内的服务等等。
上下文是系统的句柄。它提供诸如解析资源、访问数据库和首选项等服务。android应用程序有活动。它就像应用程序当前运行的环境的句柄。活动对象继承Context对象。
通过不同的调用方法可以获取上下文1.getApplicationContext(),2.getContext(),3.getBaseContext()4.或这个(在活动课上)。
上下文是系统的句柄;它提供诸如解析资源、访问数据库和首选项等服务。Android应用程序有活动。上下文就像应用程序当前运行的环境的句柄。活动对象继承上下文对象。
有关更多信息,请参阅Android Studio的Android开发简介-教程。
Android上下文是一个接口(在一般意义上,而不是在Java意义上;在Java中,上下文实际上是一个抽象类!),它允许访问特定于应用程序的资源、类以及有关应用程序环境的信息。
如果你的android应用程序是一个web应用程序,你的上下文将类似于ServletContext(我没有在这里进行精确的比较)。
您的活动和服务还扩展了Context,因此它们继承了所有这些方法来访问应用程序正在运行的环境信息。