3

ユーザーがいくつかの設定を編集できる Service と PreferenceActivity があります。ユーザーが PreferenceActivity を完了したら、サービスを再起動したいと思います。

個々の設定の変更に対して onChange リスナーを登録できることは理解していますが、設定が変更されるたびにサービスを再起動したくありません。ユーザーがすべての設定の編集を完了したら、これを行いたいと思います。PreferenceActivity に [今すぐ適用] ボタンがある以外に、これを行う簡単な方法がわかりません。

ここで何か基本的なことが欠けていますか?

ありがとう!

4

2 に答える 2

3

使用をActivity開始し、ユーザーがいつサービスを終了したかを追跡し、そこでサービスを再開します。PreferenceActivitystartActivityForResultonActivityResultPreferenceActivity

例えば。

を開始する場所PreferenceActivity:

Intent prefIntent = new Intent(this, MyPreferenceActivity.class);
startActivityForResult(prefIntent, PREFS_UPDATED);

後で同じようにActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (resultCode) {
        case PREFS_UPDATED:
            // restart service
            break;
        ...
    }
}
于 2010-10-03T05:14:28.660 に答える
1

もう 1 つの方法は、PreferenceActivity で onStart() をオーバーライドして「前の」値を記録し、その onStop() をオーバーライドしてデルタをチェックすることです。

@Override
protected void onStart() {
    super.onStart();
    // save current state into data member(s) for comparison later
    mShouldNotify = getApp().getSettings().getBoolean(PrefsActivity.PREF_SHOW_NOTIFICATIONS, true);           
}

@Override
protected void onStop() {
    super.onStop();

    if (mShouldNotify != getApp().getSettings().getBoolean(PrefsActivity.PREF_SHOW_NOTIFICATIONS, true)) {
        // we changed notifcation status.  Tell google.
        getApp().updateGooglePushRegistration();
    } 
}
于 2011-06-23T16:54:21.123 に答える