2

アクティビティ、ActivityGroup、サービスなどで使用するAndroidのComponentCallbacksインターフェースがあります。それらはそれを実装し、アクティビティ構成が変更されたときに誰かが通知します。したがって、ComponentCallbacksを実装する独自のクラスを作成してonConfigurationChangedをリッスンし、いくつかのアクションを実行したいと思います...したがって、私のクラスは実装されていますが...誰かのオブザーバーにクラスを登録する必要があると思います。

それで、それは可能ですか?構成が変更されたときに通知を受けるために自分のクラスを「登録」する方法はありますか?

これはActivityThreadであり、メソッドcollectComponentCallbacksLockedである可能性があります。しかし、私はここで自分のクラスを登録する方法を見ませんでした。

ActivityThreadComponentCallbacksを使用して

psもちろん、アクティビティのメソッドonConfigurationChange changeをオーバーライドしてから、クラスのonConfigurationChangedメソッドを呼び出すことはできますが、必要ありません。アンドロイドでそれを行う方法があるかどうか知りたいです。

4

3 に答える 3

6

「GoogleI/O 2012-より少ないコストでより多くのことを行う:優れたAndroidシチズンになる」トーク(YouTubeで見つけることができます)では、を呼び出すことでこれを行うことができると説明されていますContext.registerComponentCallbacksComponentCallbacksしたがって、クラスにインターフェイスを実装させるだけで(またはComponentCallbacks2必要に応じて)、オーバーライドできるメソッドが自動的に追加され、Activity、Fragment..からインスタンスをクラスから渡して登録するだけです。このようなもの:

 registerComponentCallbacks( mYourClass );

それでうまくいくはずです:)

于 2012-10-04T08:43:28.217 に答える
2

@Sandraの回答によると、Context.registerComponentCallbacksを使用して、システムに独自のコンポーネントコールバックを登録し、次のように使用できます。

context.registerComponentCallbacks(new ComponentCallbacks() {

            @Override
            public void onLowMemory() {
                // make some operations when system memory is low
            }

            @Override
            public void onConfigurationChanged(Configuration newConfig) {
                // make some operations when configuration has been changed
            }
        });

登録されているすべてのコールバックは、システム構成が変更されたとき/メモリ不足のときに呼び出されます。

APIレベル14から利用可能なメソッドregisterComponentCallbacksここでどのように機能するかを確認してください

于 2012-10-04T00:52:49.450 に答える
0

あなたがしたいことは、このbraodcastインテントを受信するためにBroadcastReceiverを登録することです:

Intent.ACTION_CONFIGURATION_CHANGED

そのイベントは、構成が変更されるたびにシステムによってブロードキャストされます。

于 2012-07-01T12:16:55.113 に答える