如何获取AssetManager而不参考上下文?

我有一个类需要获取对应用程序的AssetManager的引用。 这个类没有扩展任何类的android UI类,所以它没有getContext()方法或类似的东西。 是否有某种静态的Context.getCurrentApplicationContext()types的方法?

为了澄清:我的课程旨在用作图书馆,用于其他应用程序。 它没有关联的AndroidManifest.xml或控制上下文的调用它。

Solutions Collecting From Web of "如何获取AssetManager而不参考上下文?"

  1. 创buildApplication的子类,例如public class App extends Application {
  2. AndroidManifest.xml设置你的<application>标签的android:name属性指向你的新类,例如android:name=".App"
  3. 在应用程序实例的onCreate()方法中,将上下文(例如this )保存到名为app的静态字段中,并创build一个返回此字段的静态方法,例如getApp()

这应该是这样的:

 public class App extends Application{ private static Context mContext; @Override public void onCreate() { super.onCreate(); mContext = this; } public static Context getContext(){ return mContext; } } 

现在你可以使用: App.getContext()只要你想获得一个上下文,然后getAssetManager() (或App.getContext().getAssetManager() )。

我不确定OP问题的最佳答案。 但是,我知道在Android开发人员资源中使用静态上下文时必须非常小心:

在应用程序实例的onCreate()方法中,将上下文(例如this)保存到名为app的静态字段中,并创build一个返回此字段的静态方法,例如getApp()

使用静态上下文可能会泄露内存泄漏问题,尤其是在静态上下文用于引用视图时。