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

omtl5h9j  于 2022-12-02  发布在  Android
关注(0)|答案(3)|浏览(206)

我贴出这个问题是希望我能得到某种明确的答案。
如果没有活动或上下文引用,真的不可能访问资源吗?如果只需要访问一些与UI无关的值、资产或字符串,那么传递这样的引用会导致代码过于复杂。
再加上那些可能被吊死的人。
此外,这完全破坏了各种设计模式,如单例,在获取示例时必须提供参数。
放置静态引用
那么,有没有办法,或者整个社区只是生活在这个问题。

bvhaajcl

bvhaajcl1#

您的资源被捆绑到一个上下文中,这是一个事实,您无法更改。
您可以执行以下操作:
扩展Application,获取应用程序上下文并将其用作静态帮助器。

public class App extends Application {

    private static Context mContext;

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

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

您的清单:

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

disbfnqx2#

让你的Application类成为一个singleton并使用它。它是一个Context。所有的资源都绑定到你的应用,所以你需要一个Context引用。如果你不想动态加载字符串等,你可以在singleton类中预加载它们。

oug3syen

oug3syen3#

如果其他响应不起作用,我想您可以使用来自某个UI元素(如textView.getContext())的上下文。

相关问题