diff --git a/astrid/src/com/todoroo/astrid/service/StartupService.java b/astrid/src/com/todoroo/astrid/service/StartupService.java index f3531b20f..e19401cf1 100644 --- a/astrid/src/com/todoroo/astrid/service/StartupService.java +++ b/astrid/src/com/todoroo/astrid/service/StartupService.java @@ -20,8 +20,11 @@ import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.ExceptionService; import com.todoroo.andlib.service.ExceptionService.TodorooUncaughtExceptionHandler; +import com.todoroo.astrid.backup.BackupService; import com.todoroo.astrid.dao.Database; +import com.todoroo.astrid.producteev.ProducteevBackgroundService; import com.todoroo.astrid.producteev.ProducteevUtilities; +import com.todoroo.astrid.rmilk.MilkBackgroundService; import com.todoroo.astrid.rmilk.MilkUtilities; import com.todoroo.astrid.utility.Constants; import com.todoroo.astrid.utility.Preferences; @@ -95,6 +98,8 @@ public class StartupService { Preferences.setCurrentVersion(version); } + upgradeService.performSecondaryUpgrade(context); + // perform startup activities in a background thread new Thread(new Runnable() { public void run() { @@ -117,6 +122,10 @@ public class StartupService { MilkUtilities.stopOngoing(); ProducteevUtilities.INSTANCE.stopOngoing(); + ProducteevBackgroundService.scheduleService(); + BackupService.scheduleService(context); + MilkBackgroundService.scheduleService(); + // check for task killers if(!Constants.OEM) showTaskKillerHelp(context); diff --git a/astrid/src/com/todoroo/astrid/service/UpgradeService.java b/astrid/src/com/todoroo/astrid/service/UpgradeService.java index 8ed6300e6..fcd4b8c54 100644 --- a/astrid/src/com/todoroo/astrid/service/UpgradeService.java +++ b/astrid/src/com/todoroo/astrid/service/UpgradeService.java @@ -11,6 +11,7 @@ import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.activity.TaskListActivity; +import com.todoroo.astrid.dao.Database; public final class UpgradeService { @@ -21,9 +22,13 @@ public final class UpgradeService { private static final int V3_0_5 = 144; private static final int V3_0_0 = 136; private static final int V2_14_4 = 135; + @Autowired private DialogUtilities dialogUtilities; + @Autowired + private Database database; + public UpgradeService() { DependencyInjectionService.getInstance().inject(this); } @@ -169,6 +174,18 @@ public final class UpgradeService { changeLog.append(""); } - // --- database upgrade logic + // --- secondary upgrade + + /** + * If primary upgrade doesn't work for some reason (corrupt SharedPreferences, + * for example), this will catch some cases + */ + public void performSecondaryUpgrade(Context context) { + if(!context.getDatabasePath(database.getName()).exists() && + context.getDatabasePath("tasks").exists()) { //$NON-NLS-1$ + new Astrid2To3UpgradeHelper().upgrade2To3(context, 1); + } + } + }