Android:首选项更改后服务重新启动

时间:2010-10-02 22:00:15

标签: android service preferences restart

我有一个服务和一个PreferenceActivity,允许用户编辑一些首选项。一旦用户完成PreferenceActivity,我想重新启动服务。

我知道我可以为更改个人首选项更改注册onChange侦听器,但我不希望重新启动服务,因为每个首选项更改。当用户完成所有首选项的编辑时,我想这样做。如果没有在PreferenceActivity中使用“立即应用”按钮,我看不到这样做的简单方法。

我错过了一些基本的东西吗?

谢谢!

2 个答案:

答案 0 :(得分:3)

在启动Activity使用PreferenceActivitystartActivityForResult的{​​{1}}中跟踪用户何时完成onActivityResult并在那里重新启动服务。< / p>

例如

无论您在哪里开始PreferenceActivity

PreferenceActivity

稍后在同一个Intent prefIntent = new Intent(this, MyPreferenceActivity.class); startActivityForResult(prefIntent, PREFS_UPDATED);

Activity

答案 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();
    } 
}