Итак, под наблюдаемым наблюдателем шаблоном проектирования я имел в виду использование класса FileObserver , предоставляемого Android.
Например, вот фрагмент из WallPaperManagerService.jav a из исходного кода Android:
Итак, в вашем случае вы должны создать обозреватель файла (см. Пример кода ниже) в файле конфигурации, и каждый раз, когда этот файл конфигурации изменяется, вы будете читать все значения из вашей (уже работающей) службы.
Надеюсь, вы поняли суть идеи.
/**
* Observes the wallpaper for changes and notifies all IWallpaperServiceCallbacks
* that the wallpaper has changed. The CREATE is triggered when there is no
* wallpaper set and is created for the first time. The CLOSE_WRITE is triggered
* everytime the wallpaper is changed.
*/
private final FileObserver mWallpaperObserver = new FileObserver(
WALLPAPER_DIR.getAbsolutePath(), CREATE | CLOSE_WRITE | DELETE | DELETE_SELF) {
@Override
public void onEvent(int event, String path) {
if (path == null) {
return;
}
synchronized (mLock) {
// changing the wallpaper means we'll need to back up the new one
long origId = Binder.clearCallingIdentity();
BackupManager bm = new BackupManager(mContext);
bm.dataChanged();
Binder.restoreCallingIdentity(origId);
File changedFile = new File(WALLPAPER_DIR, path);
if (WALLPAPER_FILE.equals(changedFile)) {
notifyCallbacksLocked();
}
}
}
};