dddenis Asked: 2020-02-11 16:51:38 +0800 CST 2020-02-11 16:51:38 +0800 CST 2020-02-11 16:51:38 +0800 CST 上下文定义 772 最近一直在Android上编程,但是我对这个概念还是不太清楚Context,我希望你给我解释一下,因为有时你必须通过参数,而其他时候你不需要,我不'不明白这一点,有什么区别?与this。 例如在这样的代码中,为什么? TextView mTextView = new TextView(getApplicationContext()); android 2 Answers Voted Best Answer Angel Angel 2020-02-11T17:09:17+08:002020-02-11T17:09:17+08:00 Context它是一个抽象类,它是由其他人从那里实现的,因为contex它并不总是相同或并不总是有效,我的意思是它不能总是用 getContex() 或类似方法传递,因为它是另一个不同的实现所期望的,它将取决于应用程序的组件,例如(活动,服务,应用程序等),它Application正在传递的,,,,,等,可以说它是几乎整个Android系统的访问入口Activity/ServiceBroadcastReceiverContentProvider 您可以通过调用例如getApplicationContext ()提到的getContext (),getBaseContext ()或this来获取上下文您的问题之一,您只能在它位于活动类 Activity 或它与它有某种关联时使用它,它可以通过继承等。 什么时候使用: 它用于加载资源、获取SS(系统服务)、创建新活动、获取内部文件路径以及创建view需要上下文的新视图,使用 LAYOUT_INFLATER_SERVICE 等服务,以及主持某种上下文的其他部分context. ContentProvider:也不是真正的 Context ,而是在创建时给出,可以通过 getContext() 访问。如果 ContentProvider 在同一个应用程序进程中运行,那么这将返回与singleton应用程序相同的返回值,将在点中提到Application。如果两者在不同的进程中,这context将是一个新创建的包,代表它正在运行或运行的提供程序。 活动/服务:这继承自ContextWrapper实现相同的 api,称为其上下文库。当框架创建一个新的活动或服务实例时,也会创建一个新的上下文,将为活动或服务的每个新实例创建一个上下文,反过来,它的基本上下文对于每个实例都是唯一的。 应用程序:它是在您的应用程序进程中执行的单个实例patron singleton instance,它可以通过活动或服务中的 getApplication() 等方法访问,Activity或者在任何其他继承自的对象中使用,Service请记住,您将始终从您的流程中接收相同的实例。getApplicationContext ()contex BroadcastReceiver:它本身并不是一个真正的上下文framework,它发送、传递或分配一个contexten onReceive(),(PRestrictedContex)。每次broadcast event处理broadcast和交付一个新的到达时,都会发送一个新的上下文实例。 http://developer.android.com/intl/es/reference/android/content/Context.html enrique7mc 2020-02-11T17:14:56+08:002020-02-11T17:14:56+08:00 基于 SO 的回答What is Context in Android Context表示应用程序的当前状态并提供有关其执行环境的信息。它是一个抽象类,它的实现依赖于Android系统。 除其他外,它允许访问特定于应用程序的资源和类,还可以执行诸如启动活动、生成意图等操作。 一些最常见的用途是: 创建新对象: TextView mTextView = new TextView(getApplicationContext()); ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...); 访问常见资源,如 LAYOUT_INFLATER_SERVICE 或 SharedPreferences context.getSystemService(LAYOUT_INFLATER_SERVICE) 隐式访问组件: getApplicationContext().getContentResolver().query(uri, ...); 有几种方法可以访问Context getApplicationContext() getContext() getBaseContext() this如果你在一个里面Activity
Context
它是一个抽象类,它是由其他人从那里实现的,因为contex
它并不总是相同或并不总是有效,我的意思是它不能总是用 getContex() 或类似方法传递,因为它是另一个不同的实现所期望的,它将取决于应用程序的组件,例如(活动,服务,应用程序等),它Application
正在传递的,,,,,等,可以说它是几乎整个Android系统的访问入口Activity/Service
BroadcastReceiver
ContentProvider
您可以通过调用例如
getApplicationContext ()
提到的getContext ()
,getBaseContext ()
或this来获取上下文您的问题之一,您只能在它位于活动类 Activity 或它与它有某种关联时使用它,它可以通过继承等。什么时候使用:
它用于加载资源、获取
SS
(系统服务)、创建新活动、获取内部文件路径以及创建view
需要上下文的新视图,使用 LAYOUT_INFLATER_SERVICE 等服务,以及主持某种上下文的其他部分context
.ContentProvider:也不是真正的 Context ,而是在创建时给出,可以通过 getContext() 访问。如果 ContentProvider 在同一个应用程序进程中运行,那么这将返回与
singleton
应用程序相同的返回值,将在点中提到Application
。如果两者在不同的进程中,这context
将是一个新创建的包,代表它正在运行或运行的提供程序。活动/服务:这继承自
ContextWrapper
实现相同的 api,称为其上下文库。当框架创建一个新的活动或服务实例时,也会创建一个新的上下文,将为活动或服务的每个新实例创建一个上下文,反过来,它的基本上下文对于每个实例都是唯一的。应用程序:它是在您的应用程序进程中执行的单个实例
patron singleton instance
,它可以通过活动或服务中的 getApplication() 等方法访问,Activity
或者在任何其他继承自的对象中使用,Service
请记住,您将始终从您的流程中接收相同的实例。getApplicationContext ()
contex
BroadcastReceiver:它本身并不是一个真正的上下文
framework
,它发送、传递或分配一个context
enonReceive()
,(PRestrictedContex)。每次broadcast event
处理broadcast
和交付一个新的到达时,都会发送一个新的上下文实例。http://developer.android.com/intl/es/reference/android/content/Context.html
基于 SO 的回答What is Context in Android
Context
表示应用程序的当前状态并提供有关其执行环境的信息。它是一个抽象类,它的实现依赖于Android系统。除其他外,它允许访问特定于应用程序的资源和类,还可以执行诸如启动活动、生成意图等操作。
一些最常见的用途是:
创建新对象:
TextView mTextView = new TextView(getApplicationContext()); ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
访问常见资源,如 LAYOUT_INFLATER_SERVICE 或 SharedPreferences
context.getSystemService(LAYOUT_INFLATER_SERVICE)
隐式访问组件:
getApplicationContext().getContentResolver().query(uri, ...);
有几种方法可以访问
Context
getApplicationContext()
getContext()
getBaseContext()
this
如果你在一个里面Activity