アプリケーションの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()
:
静的コンテキストを使用すると、特に静的コンテキストがビューへの参照に使用される場合、リークされたメモリの問題が発生する可能性があります。