Context
类到底是什么,它有什么用途?
我在开发者网站上读到了相关内容,但我无法清楚地理解它。
Context
类到底是什么,它有什么用途?
我在开发者网站上读到了相关内容,但我无法清楚地理解它。
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
访问常用标准资源:像 LAYOUT_INFLATER_SERVICE、SharedPreferences 等服务:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
隐式访问组件: 关于内容提供程序、广播和意图。
getApplicationContext().getContentResolver().query(uri, ...);
context.getSystemService(LAYOUT_INFLATER_SERVICE)
, context
是在代码中定义的一个变量或参数,指向当前的上下文对象。 - Dennis假设Person-X是一家初创软件公司的首席执行官。
公司中有一位首席架构师,他负责公司中涉及数据库、用户界面等方面的所有工作。
现在首席执行官雇佣了一名新的开发人员。
根据新人的技能以及他是否将在数据库或用户界面等方面工作,由首席架构师告知新员工的责任。
这就像是访问Android活动到应用程序的资源。
就像当你去酒店时,你希望在合适的时间吃早餐、午餐和晚餐,对吧?
在逗留期间,还有很多其他你喜欢的东西。你如何得到这些东西呢?
你向客房服务人员要求把这些东西带给你。
在这里,客房服务人员是上下文,考虑到你是单一的活动,酒店是你的应用程序,最后早餐、午餐和晚餐必须是资源。
另一种描述方式:将上下文视为电视的遥控器,电视中的频道是资源、服务、使用意图等——遥控器作为访问前台中所有不同资源的通道。
因此,遥控器可以访问诸如资源、服务、使用意图等频道...
同样地...谁拥有遥控器的访问权限,自然而然地拥有对诸如资源、服务、使用意图等的访问权限
例子:
TextView tv = new TextView(this);
关键字this
指的是当前活动的上下文。
getApplicationContext()
,getContext()
,getBaseContext()
..... 参考此链接->(https://dev59.com/Imgv5IYBdhLWcg3wYv2i#10641257) - DevrathSomeActivityName.this
。例如,在线程中,this
指的是线程而不是活动。 - Zoe stands with Ukraine上下文是系统的句柄; 它提供诸如解析资源、访问数据库和首选项等服务。Android应用程序有活动。 上下文就像是句柄,指向您的应用程序当前运行的环境。 活动对象继承了上下文对象。
要了解更多信息,请查看使用Android Studio进行Android开发介绍 - 教程。
Context
是一个应用程序环境的全局信息的 "接口"。 实际上,Context
其实是一个 抽象类,其实现由 Android 系统提供。
它允许访问特定于应用程序的资源和类,以及针对应用程序级别操作(如启动活动、广播和接收意图等)的向上调用。
在下图中,您可以看到一组类的层次结构,其中 Context
是此层次结构的根类。 特别值得强调的是,Activity
是 Context
的后代。
什么是Context
?
根据Android参考文档,它是表示各种环境数据的实体。它提供了访问本地文件、数据库、与环境相关联的类加载器、服务(包括系统级服务)等功能。在本书和您日常的Android编码中,您会经常看到Context被频繁传递。
来自于《Android in Practice》书籍第60页。
几个Android API需要一个Context
参数
如果您浏览各种Android API,您会注意到其中许多需要一个android.content.Context
对象作为参数。您还会发现Activity或Service通常被用作Context
。这是因为这两个类都从Context
继承而来。
Android中理解context
的简单示例:
每个老板都有一个助手来照顾,完成所有不太重要且耗时的任务。如果需要文件或一杯咖啡,助手会马上去准备。有些老板几乎不知道办公室里发生了什么事情,因此他们也会向他们的助手询问。他们自己做一些工作,但对于大部分其它事情,他们需要助手的帮助。
在这种情况下,
老板 - 是Android应用程序
助手 - 是一个context
文件/咖啡杯 - 是资源
当我们需要获取关于应用程序不同部分(如活动、应用程序等)的信息时,通常称之为context。
某些使用context的操作(需要助手的地方):
获取context的不同方式:
getContext()
getBaseContext()
getApplicationContext()
this
这里提供给初学者一些提示:
首先要理解“单词上下文”:
在英语中,它的意思是:
“事件、陈述或想法发生的环境,以及可以完全理解和评估其中内容的术语。”
“立即跟随单词或段落的某些书面或口头表述,并阐明其意义的部分。”
现在将同样的理解应用到编程世界中:
当前应用程序/对象状态的上下文。它使新创建的对象了解正在进行的情况。通常,您会调用它来获取关于程序(活动、包/应用程序)的其他部分的信息。
您可以通过调用getApplicationContext()
、getContext()
、getBaseContext()
或this
(在活动类中时)来获取上下文。
要在应用程序的任何位置获取上下文,请使用以下代码:
在您的Android应用程序中创建一个名为AppContext
的新类。
public class AppContext extends Application {
private static Context context;
public void onCreate(){
super.onCreate();
AppContext.context = getApplicationContext();
}
public static Context getAppContext() {
return AppContext.context;
}
}
现在,如果您想在非活动类中获取应用程序上下文,请调用此方法,即可获得应用程序上下文。
希望这可以帮到您;)
Context是指当前对象this的引用。同时,context允许访问有关应用程序环境的信息。