我有一个 Service 和一个 PreferenceActivity 允许用户编辑一些首选项。一旦用户完成了 PreferenceActivity,我想重新启动服务。
我知道我可以为个人偏好更改注册 onChange 侦听器,但我不想在每个偏好更改时重新启动服务。当用户完成编辑所有首选项时,我想这样做。在 PreferenceActivity 中没有“立即应用”按钮,我看不到这样做的直接方法。
我在这里错过了一些基本的东西吗?
谢谢!
我有一个 Service 和一个 PreferenceActivity 允许用户编辑一些首选项。一旦用户完成了 PreferenceActivity,我想重新启动服务。
我知道我可以为个人偏好更改注册 onChange 侦听器,但我不想在每个偏好更改时重新启动服务。当用户完成编辑所有首选项时,我想这样做。在 PreferenceActivity 中没有“立即应用”按钮,我看不到这样做的直接方法。
我在这里错过了一些基本的东西吗?
谢谢!
在Activity
那开始PreferenceActivity
使用startActivityForResult
并onActivityResult
跟踪用户何时完成PreferenceActivity
并在那里重新启动服务。
例如。
无论您从哪里开始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;
...
}
}
另一种选择是覆盖 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();
}
}