1

私はプッシュサービスを使用してアプリケーションを開発しました。このアプリケーションでは、プッシュの受信時にいくつかの設定を変更し、onCreate()メインアクティビティの機能でその特定の設定の設定変更リスナーを記述し、次のように登録します。

static  OnSharedPreferenceChangeListener listner;
SharedPreferences prefs;

// 中身onCreate

prefs=getSharedPreferences(GCMIntentService.MY_PREFS, MODE_PRIVATE);
listner=new OnSharedPreferenceChangeListener() {

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
        //Here is my code    
}

prefs.registerOnSharedPreferenceChangeListener(listner);

アクティビティが実行されていない場合、またはアプリケーションが閉じられている場合に、リスナーが呼び出されるかどうかについて混乱しています。

4

2 に答える 2

0

アクティビティの状態に関係なく設定変更の通知を受け取りたい場合は、Applicationオブジェクトを拡張してリスナーコードをそこに移動することをお勧めします。アクティビティの場合と同様に、リスナーを登録しonResume()て登録を解除する必要がありますonPause()。したがって、ユーザーが不在の場合(これは、ユーザーが設定アクティビティを起動した場合)、通知を受け取りません。

于 2012-09-11T08:54:39.593 に答える
0

長い調査とテストの結果、最終的に、リスナースコープは、アプリケーションが実行されるか、アクティビティが実行状態になるまでであることがわかりました。

アプリケーションを閉じると、onPreferenceChangeListenerはイベントをリッスンしなくなります。

他の人に役立つかもしれません。

とにかくみんなに感謝します。

于 2012-09-11T16:28:47.100 に答える