1. ホーム
  2. android

[解決済み] アプリケーションコンテキストはどこでも使える?

2022-03-20 16:50:11

質問

Androidアプリで、以下のようなやり方は問題ないでしょうか?

public class MyApp extends android.app.Application {

    private static MyApp instance;

    public MyApp() {
        instance = this;
    }

    public static Context getContext() {
        return instance;
    }

}

で、コンテキストが必要なところ(例えばSQLiteOpenHelper)にはどこでもそれを渡すのでしょうか(もちろん漏れないように)。

どのように解決するのですか?

この方法にはいくつかの潜在的な問題がありますが、多くの状況(あなたの例のような)ではうまくいくでしょう。

特に、「Subject」「Subject」「Subject」「Subject」「Subject」「Subject」を扱うものは注意が必要です。 GUI を必要とするもの。 Context . 例えば、アプリケーションのContextを LayoutInflater を実行すると、Exceptionが発生します。一般的に言えば、あなたのやり方は優れています。 Activity's Context その中で Activity と、その Application Context の範囲を超えたコンテキストを渡す場合は Activity から メモリリークを回避する .

また 代替 を呼び出すというショートカットを使うことができます。 getApplicationContext() の上に Context オブジェクト (アクティビティなど) からアプリケーションコンテキストを取得します。