Better cancellation of background post-startup activities on project closing (IDEA-CR-48118)

GitOrigin-RevId: 4587e674f44f6792e316c26b6f0e5bfb667d9857
This commit is contained in:
Dmitry Jemerov
2019-06-12 14:00:02 +03:00
committed by intellij-monorepo-bot
parent 9b8f029cb7
commit 0ea0995680
@@ -21,6 +21,7 @@ import com.intellij.openapi.extensions.PluginDescriptor;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.util.BackgroundTaskUtil;
import com.intellij.openapi.project.DumbModeTask;
import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.DumbServiceImpl;
@@ -446,16 +447,18 @@ public class StartupManagerImpl extends StartupManagerEx implements Disposable {
public void scheduleBackgroundPostStartupActivities() {
myBackgroundPostStartupScheduledFuture = AppExecutorUtil.getAppScheduledExecutorService().schedule(() -> {
for (StartupActivity activity : StartupActivity.BACKGROUND_POST_STARTUP_ACTIVITY.getIterable()) {
activity.runActivity(myProject);
}
BackgroundTaskUtil.runUnderDisposeAwareIndicator(this, () -> {
for (StartupActivity activity : StartupActivity.BACKGROUND_POST_STARTUP_ACTIVITY.getIterable()) {
activity.runActivity(myProject);
}
});
}, 5, TimeUnit.SECONDS);
}
@Override
public void dispose() {
if (myBackgroundPostStartupScheduledFuture != null) {
myBackgroundPostStartupScheduledFuture.cancel(true);
myBackgroundPostStartupScheduledFuture.cancel(false);
}
}