11

2 つのクラスがアプリケーションを拡張します

  • 私がマニフェストに登録し、として使用している1つのクラスはApplication
  • 2 番目のクラスは私のユーティリティ クラスです。多くの I/O を実行し、ヘルパー メソッドがいくつかあります。I/O にはコンテキスト (getAssets など) が必要なので、しぶしぶ Application を拡張しました。

ノート:

すべてが正常に機能しています。

私の質問:

複数の Application クラスを使用することの欠点はありますか? これもアドバイスされていますか?

いくつかの考え:

  • 両方のクラスで onCreate とその他のコールバック メソッドが定義されているとどうなるでしょうか?
  • 両方をマニフェストに登録するにはどうすればよいですか? 等

PS: フィールドを使用して、2 番目のクラスにコンテキストを格納できることはわかっています。

4

1 に答える 1

8

Application には 1 つのインスタンスしか存在できないため (つまり、1 つのクラスしか存在しないため)、これはまったくお勧めできません。

私は実際に何が機能しているのか非常に疑わしいです。あなたはユーティリティクラスについて話しているので、うまく機能している静的メソッドを使用している可能性があります。しかし、デバッガを使用する必要があります。クラスの 1 つがインスタンス化されていないことに気付くことはほぼ確実です。

ちなみに、公式ドキュメントには次のように記載されています。

" 通常、Application をサブクラス化する必要はありません。ほとんどの場合、静的シングルトンは、よりモジュール化された方法で同じ機能を提供できます。シングルトンがグローバル コンテキストを必要とする場合 (たとえば、ブロードキャスト レシーバーを登録するため)、それを取得する関数は次のようになります。シングルトンを最初に構築するときに Context.getApplicationContext() を内部的に使用する Context が与えられます。」

于 2013-01-21T20:50:01.690 に答える