- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
最近对Context的两个子类Context不是很了解,为什么要用ContextImpl类来实现Context,而不是直接用ContextWrapper?
最佳答案
Context 是抽象类,它充当有关应用程序环境的全局信息的接口(interface)。这是一个抽象类,其实现由Android系统提供。它允许访问特定于应用程序的资源和类,以及对应用程序级操作的向上调用,例如启动 Activity 、广播和接收 Intent 等。
参见 Context 类代码 here
ContextWrapper 是 Context 的适配器或代理实现,它只是将其所有调用委托(delegate)给另一个 Context。可以子类化以在不更改原始上下文的情况下修改行为。 [它使用 adapter pattern]
参见 ContextWrapper 类代码 here
ContextImpl 是 Context API 的常见实现,为 Activity 和其他应用程序组件提供基础上下文对象。
参见 ContextImpl 类代码 here
So if you browse through the code of above three classes, you caneasily understand the abstract class Context class declares the APImethods, ContextImpl implements those API methods, whereasContextWrapper class is just an adapter of any Context type so it canbe used at various places where adapter pattern is required ratherthan using Context child classes.
希望它能减少困惑!!
关于android - 为什么在Android中使用ContextImpl而不是ContextWrapper来实现Context?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122846/
尝试将资源分配给输入流时出现空异常 这是我的代码 InputStream is = null; BufferedReader br = null; is = this.getResou
我正在创建具有自定义日期和时间的通知服务,但我无法执行此操作。我下载这个代码http://blog.blundell-apps.com/notification-for-a-user-chosen-t
“private void setWallpaper(Bitmap bitmap)”行给了我一个 Cannot lower the Visibility of the returned method
根据 Android 文档,ContextWrapper是“Context 的[p]代理实现,它只是将其所有调用委托(delegate)给另一个Context。可以子类化以修改行为而不更改原始Cont
从 ABD shell 开始 Instrumentation 测试工作正常: adb shell am instrument de.manayv.lotto.test/android.support.
我在 res/raw 文件夹中有一个 xml 文件,我想在我的应用程序中使用它。为什么我在真实设备上调试时 fileList() 看不到它? 最佳答案 ContextWrapper的fileList(
我创建了一个带有服务的程序 - 该服务是“START_STICKY”。因此,当我关闭程序(我正在使用 Advanced Task Killer 来终止程序)时,服务会自动重新启动,但这会出现问题,因为
我真的不知道我正在构建的 Android 应用发生了什么。在它开发的某个时刻,我开始让它在模拟器中启动后立即崩溃,并显示消息“Foo stopped”。这是错误日志,如果有人可以帮助我: 07-05
我有一个名为 FileGeneration 的类,它扩展了 Activity 在 FileGeneration 中我有一个方法叫做 protected OutputStream openAndWrit
我已在 Google Play 中发布了我的应用,并且收到了一位用户的崩溃报告。不幸的是,由于匿名原因,我没有记者的联系方式,因此无法获得有关坠机事件的更多详细信息。我只掌握了报告中的异常详细信息。下
根据标题,当我尝试调用 getDrawablesList() 时出现此错误和 setupUI()在我的 ImageSectionFragment() . getDrawablesList()和 set
我在尝试运行应用程序时意外收到空点异常错误。它发生在我点击“ichat 按钮”时,它会将您带到另一个页面: 下面是日志猫消息: 10-09 17:50:20.505: E/AndroidRuntime
在开发 Android 应用程序时,我喜欢查看内部 SDK 实现。这是一个巨大的框架,如果您知道内部方法是如何实现的,有时它会有很大帮助。 现在我所做的最后一次源代码检查真的让我感到困惑。我查看了 C
当我尝试在正常 Activity 中通过 getResources().getColor(R.color.yellow) 获取颜色时,出现此异常: 07-12 11:58:38.019: E/Andr
您好,我制作了 ContextWrapper 用于在单个位置进行改造错误处理,并希望在 subscribeWith 中使用它。 abstract class CallbackWrapper : Dis
我已实现此代码以更改应用程序的语言,它在具有 API 23、24、25、26、27 和 28 的模拟器中以及安装在 “Active Build”中时在真实设备中也能正常工作“调试”状态下的“变体”模式
我是java初学者。现在正在学习android开发,对android.view.ContextThemeWrapper类的定义很疑惑。它是 android.content.ContextWrapper
通过一些所谓的“好”来源来了解 Android 中上下文处理的细节和技巧,我多次遇到一种我无法理解的模式。 当您同样可以很好地使用隐式上下文时,使用 ContextWrapper 有什么好处? 例如为
我正在制作一个使用数据库的新 Android 应用程序。我使用类似的代码来创建和复制数据库,但由于某种原因它不起作用。想不通,求助日志猫: 07-03 21:38:54.260: E/AndroidR
问题:我想在 Android WebView 中预加载网页,并在 Activity 准备就绪时将其附加到 Activity。加载网页的触发点是在创建实际 Activity 之前。因此,我通过以下方式在
我是一名优秀的程序员,十分优秀!