在没有上下文的情况下访问资源

我正在尝试将配置(例如URL /等)放入资源文件夹中以供实用程序类使用。但是,我不想从各地的活动中传递上下文。我希望能够通过路径名访问资源(看起来像是为这种用途而设计的资产/),而无需使用上下文来访问资源。

在这种特殊情况下,我希望单例在实例化时使用配置中的内容。除了实例化期间的一次之外,它不需要任何资源。因此,每次调用getInstance()时都必须在上下文中传递,这将是一种完全的浪费。

此外,这特定于应用程序的配置,不应存储在共享系统文件或类似文件中。


答案 1

Resources.getSystem().getString(android.R.string.someuniversalstuff)

您绝对可以在应用程序中的任何地方使用它,即使在静态常量声明中也是如此!但仅适用于系统资源

对于本地资源,请使用该解决方案


答案 2

您可以扩展主应用程序类,并在其中提供通用帮助程序来访问资源。这减轻了对上下文的需求,因为应用程序将提供上下文而不是调用方。应用程序类是单例样式,在应用程序的任何部分(包括服务)运行时应始终可用。

public class MyApplication extends Application {
 protected static MyApplication instance;

 @Override
 public void onCreate() {
  super.onCreate();
  instance = this;
 }

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

这使您可以访问:

MyApplication.getResources()....

请务必在清单中声明自定义应用程序,以获取对此应用程序的访问权限。假设您的自定义应用程序位于应用程序命名空间的根目录中:

<application
 android:name=".MyApplication"
 ... >

推荐