我有一个类需要获取对其应用程序的 AssetManager
的引用。这个类不扩展任何android UI类,因此它没有 getContext()
方法或类似的内容。是否有某种静态的 Context.getCurrentApplicationContext()
类型的方法?
为了澄清:我的类旨在像一个库一样供其他应用程序使用。它没有关联的 AndroidManifest.xml
或控制调用它的上下文。
我有一个类需要获取对其应用程序的 AssetManager
的引用。这个类不扩展任何android UI类,因此它没有 getContext()
方法或类似的内容。是否有某种静态的 Context.getCurrentApplicationContext()
类型的方法?
为了澄清:我的类旨在像一个库一样供其他应用程序使用。它没有关联的 AndroidManifest.xml
或控制调用它的上下文。
Application
的子类,例如public class App extends Application {
AndroidManifest.xml
文件中的<application>
标签的android:name
属性设置为指向你的新类,例如android:name=".App"
onCreate()
方法中,将上下文(例如this
)保存到名为app
的静态字段中,并创建一个返回该字段的静态方法,例如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()
)。
onCreate()
方法中,将您的上下文(例如,this)保存到名为app的静态字段中,并创建一个返回此字段的静态方法,例如getApp()
。如果静态上下文用于对视图的引用,则可能会出现内存泄漏问题。