@Override
    public void reload() {
        synchronized (sync) {
            com.google.common.io.Closer closer = com.google.common.io.Closer.create();
            try {

                if (!mFile.getBaseFile().exists()) {
                    XLog.w("getBaseFile not exists, skip load: " + name());
                    return;
                }

                if (mFile.getBaseFile().isDirectory()) {
                    XLog.w("getBaseFile isDirectory, clean up: " + name());
                    FileUtils.deleteDirQuiet(mFile.getBaseFile());
                    mFile.delete();
                }


                InputStream is = closer.register(mFile.openRead());
                @SuppressWarnings("unchecked") Map<String, String> m = (Map<String, String>) XmlUtils.readMapXml(is);
                mStorage.putAll(m);

            } catch (Throwable e) {
                XLog.w("Fail reload@IOException: " + mFile + "\n" + Log.getStackTraceString(e));
            } finally {
                IoUtils.closeQuietly(closer);
            }
        }
    }
Flush data too many times, may drain battery.
android/android_framework/base/src/main/java/github/tornaco/android/thanos/core/persist/StringMapRepo.java