Moving reminder scheduling into a background service to prevent ANR dialogs

pull/14/head
Tim Su 14 years ago
parent dac7b40c94
commit 9598ba52d4

@ -382,6 +382,7 @@
android:finishOnTaskLaunch="true"
android:clearTaskOnLaunch="true">
</activity>
<service android:name="com.todoroo.astrid.reminders.ReminderSchedulingService"/>
<!-- producteev -->
<receiver android:name="com.todoroo.astrid.producteev.ProducteevFilterExposer">

@ -0,0 +1,39 @@
package com.todoroo.astrid.reminders;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.astrid.alarms.AlarmService;
/**
* Schedules reminders in the background to prevent ANR's
*
* @author Tim Su
*
*/
public class ReminderSchedulingService extends Service {
/** Receive the alarm - start the synchronize service! */
@SuppressWarnings("nls")
@Override
public void onStart(Intent intent, int startId) {
ContextManager.setContext(this);
try {
ReminderService.getInstance().scheduleAllAlarms();
AlarmService.getInstance().scheduleAllAlarms();
} catch (Exception e) {
Log.e("reminder-scheduling", "reminder-startup", e);
}
stopSelf();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}

@ -4,11 +4,6 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.astrid.alarms.AlarmService;
import com.todoroo.astrid.service.AstridDependencyInjector;
/**
@ -25,19 +20,13 @@ public class ReminderStartupReceiver extends BroadcastReceiver {
// --- system startup
@Autowired
ExceptionService exceptionService;
@Override
/** Called when the system is started up */
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
try {
ReminderService.getInstance().scheduleAllAlarms();
AlarmService.getInstance().scheduleAllAlarms();
} catch (Exception e) {
DependencyInjectionService.getInstance().inject(this);
exceptionService.reportError("reminder-startup", e); //$NON-NLS-1$
}
startReminderSchedulingService(context);
}
public static void startReminderSchedulingService(Context context) {
context.startService(new Intent(context, ReminderSchedulingService.class));
}
}

@ -3,6 +3,8 @@ package com.todoroo.astrid.service;
import java.io.File;
import java.util.List;
import org.weloveastrid.rmilk.MilkUtilities;
import android.Manifest;
import android.app.AlarmManager;
import android.app.AlertDialog;
@ -23,14 +25,13 @@ import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.ExceptionService;
import com.todoroo.andlib.service.ExceptionService.TodorooUncaughtExceptionHandler;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.alarms.AlarmService;
import com.todoroo.astrid.backup.BackupConstants;
import com.todoroo.astrid.backup.BackupService;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.producteev.ProducteevBackgroundService;
import com.todoroo.astrid.producteev.ProducteevUtilities;
import com.todoroo.astrid.reminders.ReminderService;
import com.todoroo.astrid.reminders.ReminderStartupReceiver;
import com.todoroo.astrid.utility.Constants;
import com.todoroo.astrid.utility.Preferences;
import com.todoroo.astrid.widget.TasksWidget.UpdateService;
@ -126,16 +127,11 @@ public class StartupService {
taskService.cleanup();
// schedule alarms
try {
ReminderService.getInstance().scheduleAllAlarms();
AlarmService.getInstance().scheduleAllAlarms();
} catch (Exception e) {
DependencyInjectionService.getInstance().inject(this);
exceptionService.reportError("reminder-startup", e); //$NON-NLS-1$
}
ReminderStartupReceiver.startReminderSchedulingService(context);
// if sync ongoing flag was set, clear it
ProducteevUtilities.INSTANCE.stopOngoing();
MilkUtilities.INSTANCE.stopOngoing();
ProducteevBackgroundService.scheduleService();
BackupService.scheduleService(context);

Loading…
Cancel
Save