public void onChange(boolean selfChange, Uri uri) {
if (mDebug) Log.d(mTag, "onChange selfChange=" + selfChange + " uri=" + uri);
+ ComponentName cn = getComponentNameFromSetting();
+ if (cn == null && mServiceName == null || cn != null && cn.equals(mServiceName)) {
+ if (mDebug) Log.d(mTag, "skipping no-op restart");
+ return;
+ }
if (mBound) {
mHandler.sendEmptyMessage(MSG_STOP_SERVICE);
}
mHandler.sendEmptyMessage(MSG_START_SERVICE);
}
+ private ComponentName getComponentNameFromSetting() {
+ String cn = Settings.Secure.getStringForUser(mContext.getContentResolver(),
+ mSettingKey, UserHandle.USER_CURRENT);
+ return cn == null ? null : ComponentName.unflattenFromString(cn);
+ }
+
// everything below is called on the handler
private void packageIntent(Intent intent) {
}
private void startService() {
- String cn = Settings.Secure.getStringForUser(mContext.getContentResolver(),
- mSettingKey, UserHandle.USER_CURRENT);
- mServiceName = cn == null ? null : ComponentName.unflattenFromString(cn);
+ mServiceName = getComponentNameFromSetting();
if (mDebug) Log.d(mTag, "startService mServiceName=" + mServiceName);
if (mServiceName == null) {
mBound = false;