From 4a83d1fd1a39c354f9386ef6ca26ff106ef87faf Mon Sep 17 00:00:00 2001 From: Tim Su Date: Sat, 14 Aug 2010 14:14:38 -0700 Subject: [PATCH] Fix for crashes, made services more crash-resistant --- .../com/todoroo/astrid/backup/BackupService.java | 11 ++++++++--- .../producteev/ProducteevBackgroundService.java | 1 + .../producteev/sync/ProducteevSyncProvider.java | 4 ++-- .../astrid/rmilk/MilkBackgroundService.java | 1 + .../todoroo/astrid/rmilk/sync/RTMSyncProvider.java | 14 +++++++++----- 5 files changed, 21 insertions(+), 10 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/backup/BackupService.java b/astrid/plugin-src/com/todoroo/astrid/backup/BackupService.java index ca863e271..5872b0cac 100644 --- a/astrid/plugin-src/com/todoroo/astrid/backup/BackupService.java +++ b/astrid/plugin-src/com/todoroo/astrid/backup/BackupService.java @@ -15,6 +15,7 @@ import android.util.Log; import com.timsu.astrid.R; import com.todoroo.andlib.service.ContextManager; +import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.utility.Preferences; /** @@ -44,9 +45,13 @@ public class BackupService extends Service { @Override public void onStart(Intent intent, int startId) { - if (intent.getAction().equals(BACKUP_ACTION)) { - ContextManager.setContext(this); - startBackup(this); + try { + if (intent.getAction().equals(BACKUP_ACTION)) { + ContextManager.setContext(this); + startBackup(this); + } + } catch (Exception e) { + PluginServices.getExceptionService().reportError("backup-bg-sync", e); //$NON-NLS-1$ } } diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevBackgroundService.java b/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevBackgroundService.java index dffa47776..667d425d2 100644 --- a/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevBackgroundService.java +++ b/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevBackgroundService.java @@ -53,6 +53,7 @@ public class ProducteevBackgroundService extends Service { if(ProducteevUtilities.INSTANCE.isOngoing()) return; + PluginServices.getTaskService(); new ProducteevSyncProvider().synchronize(context); } diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java index 3c11c4afc..5461247ee 100644 --- a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java +++ b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java @@ -163,8 +163,8 @@ public class ProducteevSyncProvider extends SyncProvider { } }); intent.putExtra(MilkLoginActivity.URL_TOKEN, url); + if(context instanceof Activity) ((Activity)context).startActivityForResult(intent, 0); - else - context.startActivity(intent); + else { + // can't synchronize until user logs in + MilkUtilities.setToken(null); + MilkUtilities.stopOngoing(); + } } else { performSync();