0

クラスを拡張Applicationしてグローバル変数を保存するパターンを使用しています ( https://stackoverflow.com/a/708317/1709805 )。Android コンポーネント ( ActivityFragmentService、 ecc) から ( (MyApp) getApplicaction()) を使用してアクセスしますが、私のプロジェクトには、(明らかに) そのメソッドを使用できない多くのヘルパー クラスがあります。この問題を解決するために、アプリケーションを返す静的メソッドを宣言しました。これはコードです:

public class MyApp extends Application{

  private static MyApp app;

  @Override
  public void onCreate(){
      super.onCreate();
      app = this;
  }

  public static MyApp getApp() {
      return app;
  }
}

いいパターンですか?より良い方法で私の目的を達成するための提案はありますか? ありがとうございました

4

1 に答える 1

3

その悪い習慣です。

MyApp app = (MyApp)getApplicationContext();アプリケーション全体で使用するだけです。

AndroidManifest.xmlファイルのタグでMyAppを宣言していることを確認してください<application>

あなたがしなければならないことは、MyApp app他の非Androidコンポーネントクラスのオブジェクトにアクセスしたい場合は、 Androidコンポーネントクラス(アクティビティ、フラグメント、サービスなど)から非Androidコンポーネントクラス(ヘルパー、ハンドラー、またはその他のJavaクラス)に渡すMyApp appことですargument of Constructor or Method)。

于 2013-02-21T09:38:27.283 に答える