手机网站建设公司推荐,wordpress主动推送代码,xampp配置wordpress,网站首页代码怎么做介绍
在Android开发中#xff0c;Context是一个非常重要的概念#xff0c;但是很多开发者可能并不清楚它的真正含义以及为什么需要使用它。本文将详细介绍Context的概念#xff0c;并解释为什么在Android应用中需要使用它。
Context的来源
Context的概念来源于Android框架…介绍
在Android开发中Context是一个非常重要的概念但是很多开发者可能并不清楚它的真正含义以及为什么需要使用它。本文将详细介绍Context的概念并解释为什么在Android应用中需要使用它。
Context的来源
Context的概念来源于Android框架具体来说就是android.jar这个主要的Android框架。它加载在Android运行时环境中可以被所有应用程序访问。在Android SDK中有一个简化版本的Context需要导入其中的一些类来使用它。
Android框架是在Android系统上运行的主要应用程序而我们的应用程序只是这个主要应用程序的一些事件处理程序。可以想象一下这个主要应用程序具有一个菜单可以下载和控制一些小型应用程序。然而这个主要应用程序需要向正在运行的小型应用程序提供一些信息例如资源路径以及其他功能比如访问资源、创建新文件、在数据库或文件中存储简单的键值对等等一种与超级应用程序进行交互的API。它还可以为我们的小型应用程序提供哪些其他功能呢那么Android是如何将这些信息和功能传递给我们的呢通过一个名为Context的类。
Context中的功能
当我们的应用程序被安装时它们的资源文件例如string.xml、layout XML文件、可绘制资源等会被复制到一个特定的路径中这个路径与源代码分离因此我们无法使用相对路径访问它们。另外我们的大多数资源都是XML文件而要解析XML文件并检索特定的值是很困难的实际上资源被编译成二进制文件从这个二进制文件中读取数据更加困难。因此Android提供了一些函数来帮助我们访问这些资源例如 • getResources().getString() • getResources().getDrawable() • getResources().getColor()
主题Theme是Context中的另一个重要概念。等等。
Context还提供了一些有用的API如简单的键值对注册表SharedPreferences、数据库SQLite、其他已安装包的信息、请求权限等等。
在Android开发中启动新的Activity是一项重要且频繁的任务需要在许多地方调用startActivity方法。因此最好能够在Context中提供startActivity方法这还有其他原因在下文中会详细解释。
每个组件都有一个Context
现在我们知道应用程序为什么需要Context了但为什么Context不是全局的呢因为并不存在一个单一的Context。确切地说整个应用程序只有一个Context对象但对于每个创建的Activity也会为其创建一个Context并分配给该Activity。你可以将ApplicationContext保存在一个静态变量中以便在所有类中都可以访问。
其他的Context对象又有什么作用呢我们应该知道它们也是Context类的实例因此并没有根本的区别。如前所述每个Activity都可以拥有自己的主题因此它需要另一个Context实例。这还不是全部在与Context相关的后退栈等原因可以在链接中阅读https://developer.android.com/guide/components/activities/tasks-and-back-stack。请注意Activity所属的Context在Activity结束时被销毁。
总的来说有一个单一的ApplicationContext它可以在整个应用程序的生命周期内存在同时每个Activity和Service都有自己的Context当这些组件Activity或Service被创建时就会创建一个相应的Context。
装饰者设计模式
Context类是一个抽象类不能被实例化因此还有另一个实现了Context的类称为ContextImpl.Application。Activity和Service类都是从ContextWrapper派生的这是使用装饰者模式的一个示例。这些类接受一个Context对象即ContextImpl的对象并扩展了Context类以将所有调用函数转发给接收到的对象。通过这种方式Context对象与组件分离因此可以安全地将Context的引用传递给函数和类而不是传递Activity或Service的引用。 注转自 Kotin社区 为什么在Android中需要Context