0

各アクティビティが異なる画面/ビューに対応する複数のアクティビティを持つ Android アプリケーションがあり、実際には何らかの形で連続しています (特定のイベントの後に 1 つの内部アクティビティが別のアクティビティを起動するという意味で)。

そのコンテキストでは、アプリケーションからいくつかの構成 (潜在的にすべてのアクティビティに共通の構成) を設定する外部インテントを受信できるようにしたいのですが、現在のビューを変更したくありません。

どうすればいいですか?特定のアクティビティではなく、ブロードキャスト レシーバーをアプリケーション自体にバインドする方法はありますか?

ブロードキャスト レシーバーはアクティビティに直接接続されていませんか? [インテントに関する Android チュートリアル] (http://developer.android.com/guide/components/intents-filters.html#npex) を見ると、すべてのインテント フィルターがマニフェスト ファイルのさまざまなアクティビティに関連付けられています。しかし、この【チュートリアル】(http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html)を見ると、アプリ直下のマニフェストでReceiverを宣言できることがわかります。

アプリケーション (マニフェスト上) の下のクラスに直接アタッチすると、コードが実行され、フロントグラウンド アクティビティ (ビュー) は変更されないということですか?

4

1 に答える 1

0

ここでは、要件に基づいて異なる設計パターンを使用できる場合があります。

永続的な情報をメモリに保持したい場合は、アプリケーション全体で共有設定を使用できます。

すべての構成値を含む何らかの外部インテントを取得するためのブロードキャスト レシーバーを 1 つ持つことができます。

毎回、内部ハッシュ (共有設定に保存されている) を使用して外部構成ハッシュを確認できます。違いが見つかった場合は、共有設定を更新できます。

したがって、構成クラスを作成し、このクラス オブジェクトを共有設定に保存することをお勧めします。

オブジェクトを共有設定に保存するには、いくつかの方法があります。

そのため、各アクティビティで、 onResume() の設定を読み取って新しい構成を適用できます。

共有設定で conf オブジェクトを永続化したくない場合は、Conf クラスの静的オブジェクトを使用して、アプリケーション クラスで初期化することができます。

例えば-

  public class BaseClass extends Application {
  public static Conf conf ;
  ....
  }

http://developer.android.com/reference/android/app/Application.html

したがって、アプリケーション クラスは、コンポーネント (Activity 、 Service ) 固有ではなく、グローバルなアプリケーション状態を維持する必要がある人のための基本クラスです。

于 2013-01-22T15:49:16.847 に答える