我有一个服务和一个PreferenceActivity,允许用户编辑一些首选项。一旦用户完成PreferenceActivity,我想重新启动服务。
我知道我可以为更改个人首选项更改注册onChange侦听器,但我不希望重新启动服务,因为每个首选项更改。当用户完成所有首选项的编辑时,我想这样做。如果没有在PreferenceActivity中使用“立即应用”按钮,我看不到这样做的简单方法。
我错过了一些基本的东西吗?
谢谢!
答案 0 :(得分:3)
在启动Activity
使用PreferenceActivity
和startActivityForResult
的{{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();
}
}