Android:在没有 Activity 或 Context 引用的情况下访问资源

标签 android resources

我发布这个问题是希望能得到某种明确的答案。

如果没有 Activity 或上下文引用,真的不可能访问资源吗?当只需要访问一些与 UI 无关的值、 Assets 或字符串时,传递此类引用会导致代码过于复杂。

加上所有那些潜在的悬挂引用。

这也完全破坏了各种设计模式,例如单例,在获取实例时必须提供参数。

放置静态引用

那么有没有办法或者整个社区是否都可以解决这个问题。

最佳答案

您的资源绑定(bind)到上下文,这是事实,您无法更改。

以下是您可以执行的操作:

扩展 Application,获取应用程序上下文并将其用作静态助手。

public class App extends Application {

    private static Context mContext;

    public static Resources getResources() {
        return mContext.getResources();
    }

    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
    }
}

您的 list :

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:name="your.package.path.to.App">

关于Android:在没有 Activity 或 Context 引用的情况下访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7531959/

相关文章:

android - 在 Android 上使用 PhoneGap 无法从外部 URL 访问本地文件

android - 如何在服务类中添加进度对话框?

resources - 经纬度主要城市列表

c# - 如何获取嵌入式资源的路径?

c# - 与 Properties.Resources.image 的图像比较

Android O 无法接收广播 Intent.ACTION_NEW_OUTGOING_CALL

java - 安卓 : RSA Encrypt and Decrypt but when call it error

java - 如何在 Java (Intellij) 中访问资源文件?

c# - 如何解决此 "Resource name is not a valid identifier"编译器警告

android - 我可以创建一个新文件夹并将我的 SQLite 导入其中吗?