diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java b/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java index 01283eb85ed5..1dcc9a8cf277 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/persistence/ApplicationStatisticsPersistenceComponent.java @@ -28,6 +28,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.project.ProjectManagerAdapter; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.util.Alarm; import com.intellij.util.Function; import gnu.trove.THashSet; import org.jdom.Element; @@ -46,6 +47,9 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis implements ApplicationComponent, PersistentStateComponent { private boolean persistOnClosing = !ApplicationManager.getApplication().isUnitTestMode(); + private final Alarm myAlarm; + private final long PERSIST_PERIOD = 24*60*60*1000; //1 day + private static final String TOKENIZER = ","; @NonNls @@ -62,6 +66,10 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis @NonNls private static final String VALUES_ATTR = "values"; + public ApplicationStatisticsPersistenceComponent() { + myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication()); + } + public static ApplicationStatisticsPersistenceComponent getInstance() { return ApplicationManager.getApplication().getComponent(ApplicationStatisticsPersistenceComponent.class); } @@ -186,6 +194,18 @@ public class ApplicationStatisticsPersistenceComponent extends ApplicationStatis } } }); + + persistPeriodically(); + } + + private void persistPeriodically() { + myAlarm.addRequest(new Runnable() { + @Override + public void run() { + persistOpenedProjects(); + persistPeriodically(); + } + }, PERSIST_PERIOD); } private static void persistOpenedProjects() { diff --git a/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java b/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java index 08c704fbaebc..1270ec26f2b1 100644 --- a/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java +++ b/platform/platform-impl/src/com/intellij/internal/statistic/updater/SendStatisticsComponent.java @@ -35,7 +35,7 @@ public class SendStatisticsComponent implements ApplicationComponent { private static final int DELAY_IN_MIN = 10; - private Alarm myAlarm; + private final Alarm myAlarm; public SendStatisticsComponent() { myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, ApplicationManager.getApplication());