コンテキストを参照せずにAssetManagerを取得する方法は?
-
08-10-2019 - |
質問
アプリケーションへの参照を取得する必要があるクラスがあります 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()
アプリインスタンスの方法、コンテキスト(これなど)をAPPという名前の静的フィールドに保存し、このフィールドを返す静的メソッドを作成します。getApp()
:
静的コンテキストを使用すると、特に静的コンテキストがビューへの参照に使用される場合、メモリの問題が漏れている可能性があります。
所属していません StackOverflow