java - 如何正确管理 Android 应用程序的上下文(非 Activity 类)

标签 java android

类似的帖子没有我正在寻找的答案。

Using Application context everywhere?

http://developer.android.com/reference/android/app/Application.html

Static way to get 'Context' on Android?

What's the difference between the various methods to get a Context?

问题描述:

我有一组实用类,其中一些写文件。其他人可能使用数据库等。关键是我的实用程序类中不止一个需要 Context。一个简单的例子是通过 context.getString(r.strings.id) 从 strings.xml 中读取。

我认为在大多数情况下我想避免使用单例。除非绝对必要,否则我会选择单例。这已解决并发布在其中一个链接上。我个人认为它们是一种 ati 模式。只是个人选择。我知道您的应用程序上下文根据定义是一个单例对象。每个应用程序上下文只有一个应用程序。如果这是唯一的方法,我愿意接受上述选项。

问题:

我的实用程序类如何才能访问我的应用程序上下文,以便我可以简单地执行 new MyContext()。此上下文需要引用应用程序资源。我认为这在从 Activity 调用时称为 applicationContext() 。理想情况下,这将是一个廉价的操作。

谢谢。

编辑:(澄清) 我正在编写一个应用程序将自身绑定(bind)到的服务。我认为这不应该影响答案。再次感谢。

最佳答案

我认为最安全的方法是将上下文实例传递给需要访问资源等的每个函数。这似乎是 API 采用的常见做法。实际上,我很困惑为什么这么多函数似乎都需要一个上下文实例,直到出现这种情况。

关于java - 如何正确管理 Android 应用程序的上下文(非 Activity 类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8564408/

相关文章:

java - 将文本文件拆分为两个文件(java)

java - 如何在不使用js的情况下在java中对json进行字符串化

java - 如何在 CDT 期间保持 "-6"作为 UTC 偏移量?

java - 在 Firebase 数据库中读取和写入数据

android - DatePicker 的 setMinDate() 不起作用

java - 使用 spring boot 应用程序属性设置 tomcat 属性

java - 如何将 Map 的 Map 转换为 Json

java - 从字符串中删除自定义标签,然后格式化其内容

android - 打开的文件太多错误 - 调试

android - 如何在 Build.Gradle 中添加 SonarQube 插件并获取当前项目的报告