我有一个类需要获取对其应用程序的引用AssetManager
。此类不扩展任何类型的 android UI 类,因此它没有getContext()
方法或类似的东西。是否有某种静态Context.getCurrentApplicationContext()
类型的方法?
澄清一下:我的课程旨在像图书馆一样用于其他应用程序。AndroidManifest.xml
它对调用它的上下文没有关联或控制。
我有一个类需要获取对其应用程序的引用AssetManager
。此类不扩展任何类型的 android UI 类,因此它没有getContext()
方法或类似的东西。是否有某种静态Context.getCurrentApplicationContext()
类型的方法?
澄清一下:我的课程旨在像图书馆一样用于其他应用程序。AndroidManifest.xml
它对调用它的上下文没有关联或控制。
Application
,例如public class App extends Application {
android:name
属性设置为指向您的新类,例如<application>
AndroidManifest.xml
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()
)。
我不确定 OP 问题的最佳答案。但是,我知道在使用Android 开发人员资源中建议的静态上下文时必须非常小心:
在
onCreate()
您的应用程序实例的方法中,将您的上下文(例如 this)保存到名为 app 的静态字段并创建一个返回此字段的静态方法,例如getApp()
:
使用静态上下文可能会导致内存泄漏问题,尤其是在静态上下文用于对视图的引用时。