Fix for crashes, made services more crash-resistant

pull/14/head
Tim Su 16 years ago
parent a820c2f9c8
commit 4a83d1fd1a

@ -15,6 +15,7 @@ import android.util.Log;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.utility.Preferences; import com.todoroo.astrid.utility.Preferences;
/** /**
@ -44,9 +45,13 @@ public class BackupService extends Service {
@Override @Override
public void onStart(Intent intent, int startId) { public void onStart(Intent intent, int startId) {
if (intent.getAction().equals(BACKUP_ACTION)) { try {
ContextManager.setContext(this); if (intent.getAction().equals(BACKUP_ACTION)) {
startBackup(this); ContextManager.setContext(this);
startBackup(this);
}
} catch (Exception e) {
PluginServices.getExceptionService().reportError("backup-bg-sync", e); //$NON-NLS-1$
} }
} }

@ -53,6 +53,7 @@ public class ProducteevBackgroundService extends Service {
if(ProducteevUtilities.INSTANCE.isOngoing()) if(ProducteevUtilities.INSTANCE.isOngoing())
return; return;
PluginServices.getTaskService();
new ProducteevSyncProvider().synchronize(context); new ProducteevSyncProvider().synchronize(context);
} }

@ -163,8 +163,8 @@ public class ProducteevSyncProvider extends SyncProvider<ProducteevTaskContainer
if(context instanceof Activity) if(context instanceof Activity)
((Activity)context).startActivityForResult(intent, 0); ((Activity)context).startActivityForResult(intent, 0);
else { else {
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); preferences.setToken(null);
context.startActivity(intent); preferences.stopOngoing();
} }
} else { } else {
invoker.authenticate(email, password); invoker.authenticate(email, password);

@ -53,6 +53,7 @@ public class MilkBackgroundService extends Service {
if(MilkUtilities.isOngoing()) if(MilkUtilities.isOngoing())
return; return;
PluginServices.getTaskService();
new RTMSyncProvider().synchronize(context); new RTMSyncProvider().synchronize(context);
} }

@ -36,21 +36,21 @@ import com.todoroo.astrid.common.SyncProvider;
import com.todoroo.astrid.model.Metadata; import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task; import com.todoroo.astrid.model.Task;
import com.todoroo.astrid.rmilk.MilkLoginActivity; import com.todoroo.astrid.rmilk.MilkLoginActivity;
import com.todoroo.astrid.rmilk.MilkLoginActivity.SyncLoginCallback;
import com.todoroo.astrid.rmilk.MilkPreferences; import com.todoroo.astrid.rmilk.MilkPreferences;
import com.todoroo.astrid.rmilk.MilkUtilities; import com.todoroo.astrid.rmilk.MilkUtilities;
import com.todoroo.astrid.rmilk.MilkLoginActivity.SyncLoginCallback;
import com.todoroo.astrid.rmilk.api.ApplicationInfo; import com.todoroo.astrid.rmilk.api.ApplicationInfo;
import com.todoroo.astrid.rmilk.api.ServiceImpl; import com.todoroo.astrid.rmilk.api.ServiceImpl;
import com.todoroo.astrid.rmilk.api.ServiceInternalException; import com.todoroo.astrid.rmilk.api.ServiceInternalException;
import com.todoroo.astrid.rmilk.api.data.RtmAuth.Perms;
import com.todoroo.astrid.rmilk.api.data.RtmList; import com.todoroo.astrid.rmilk.api.data.RtmList;
import com.todoroo.astrid.rmilk.api.data.RtmLists; import com.todoroo.astrid.rmilk.api.data.RtmLists;
import com.todoroo.astrid.rmilk.api.data.RtmTask; import com.todoroo.astrid.rmilk.api.data.RtmTask;
import com.todoroo.astrid.rmilk.api.data.RtmTask.Priority;
import com.todoroo.astrid.rmilk.api.data.RtmTaskList; import com.todoroo.astrid.rmilk.api.data.RtmTaskList;
import com.todoroo.astrid.rmilk.api.data.RtmTaskNote; import com.todoroo.astrid.rmilk.api.data.RtmTaskNote;
import com.todoroo.astrid.rmilk.api.data.RtmTaskSeries; import com.todoroo.astrid.rmilk.api.data.RtmTaskSeries;
import com.todoroo.astrid.rmilk.api.data.RtmTasks; import com.todoroo.astrid.rmilk.api.data.RtmTasks;
import com.todoroo.astrid.rmilk.api.data.RtmAuth.Perms;
import com.todoroo.astrid.rmilk.api.data.RtmTask.Priority;
import com.todoroo.astrid.rmilk.data.MilkDataService; import com.todoroo.astrid.rmilk.data.MilkDataService;
import com.todoroo.astrid.rmilk.data.MilkNote; import com.todoroo.astrid.rmilk.data.MilkNote;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
@ -212,10 +212,14 @@ public class RTMSyncProvider extends SyncProvider<RTMTaskContainer> {
} }
}); });
intent.putExtra(MilkLoginActivity.URL_TOKEN, url); intent.putExtra(MilkLoginActivity.URL_TOKEN, url);
if(context instanceof Activity) if(context instanceof Activity)
((Activity)context).startActivityForResult(intent, 0); ((Activity)context).startActivityForResult(intent, 0);
else else {
context.startActivity(intent); // can't synchronize until user logs in
MilkUtilities.setToken(null);
MilkUtilities.stopOngoing();
}
} else { } else {
performSync(); performSync();

Loading…
Cancel
Save