【发布时间】:2013-05-19 09:12:17
【问题描述】:
是否可以在没有上下文的情况下访问 AssetManager?我见过其他人的解决方案是扩展Application,并将Context保存在onCreate()中,并创建一个静态getter来返回Context。我觉得这真的很草率,并且破坏了封装,因为您现在已经将 Context 中的所有内容授予整个应用程序的访问权限。我想我可以将其减少为仅保存 AssetManager,但这仍然是一个非常棘手的修复。
我知道你可以通过调用类似的东西来访问没有上下文的资源
Resources.getSystem().getString()
但是,通过
访问 AssetManagerResources.getSystem().getAssets()
仅授予您访问某些内置资产的权限,而不授予您资产文件夹中的实际内容。
我是否坚持使用 hacky Application 子类,还是有更清洁的方法?
【问题讨论】:
-
为什么你认为保存应用程序上下文是草率的?你可以把它放在同一个类中,然后像任何其他单例一样调用 getInstance()...
标签: android android-assets android-context