summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wren <cwren@android.com>2013-05-09 18:04:08 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-05-09 18:04:08 -0700
commit587cf52babf1b9767cf13ec87167c2c91df0e3b1 (patch)
tree6506ca86faa04cbd997e679ec0d878d6e35543f2
parent6e717b90a867026fdad41663fa982105de1c26e7 (diff)
parent7ecf798315d4c54e6435f13e0eaaf5c1a0a089b2 (diff)
downloadCalendar-587cf52babf1b9767cf13ec87167c2c91df0e3b1.tar.gz
am 7ecf7983: spawn a worker thread in onReceive.
* commit '7ecf798315d4c54e6435f13e0eaaf5c1a0a089b2': spawn a worker thread in onReceive.
-rw-r--r--src/com/android/calendar/alerts/GlobalDismissManager.java69
1 files changed, 40 insertions, 29 deletions
diff --git a/src/com/android/calendar/alerts/GlobalDismissManager.java b/src/com/android/calendar/alerts/GlobalDismissManager.java
index a57a9945..6bbd2bc0 100644
--- a/src/com/android/calendar/alerts/GlobalDismissManager.java
+++ b/src/com/android/calendar/alerts/GlobalDismissManager.java
@@ -24,6 +24,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.CalendarContract.CalendarAlerts;
import android.provider.CalendarContract.Calendars;
@@ -335,40 +336,50 @@ public class GlobalDismissManager extends BroadcastReceiver {
return calendarsToAccounts;
}
+ @SuppressWarnings("unchecked")
@Override
public void onReceive(Context context, Intent intent) {
- boolean updated = false;
- if (intent.hasExtra(SYNC_ID) && intent.hasExtra(ACCOUNT_NAME)) {
- String syncId = intent.getStringExtra(SYNC_ID);
- long startTime = Long.parseLong(intent.getStringExtra(START_TIME));
- ContentResolver resolver = context.getContentResolver();
+ new AsyncTask<Pair<Context, Intent>, Void, Void>() {
+ @Override
+ protected Void doInBackground(Pair<Context, Intent>... params) {
+ Context context = params[0].first;
+ Intent intent = params[0].second;
+ boolean updated = false;
+ if (intent.hasExtra(SYNC_ID) && intent.hasExtra(ACCOUNT_NAME)) {
+ String syncId = intent.getStringExtra(SYNC_ID);
+ long startTime = Long.parseLong(intent.getStringExtra(START_TIME));
+ ContentResolver resolver = context.getContentResolver();
- Uri uri = asSync(Events.CONTENT_URI, GOOGLE_ACCOUNT_TYPE,
- intent.getStringExtra(ACCOUNT_NAME));
- Cursor cursor = resolver.query(uri, EVENT_SYNC_PROJECTION,
- Events._SYNC_ID + " = '" + syncId + "'", null, null);
- try {
- int event_id_idx = cursor.getColumnIndex(Events._ID);
- cursor.moveToFirst();
- if (event_id_idx != -1 && !cursor.isAfterLast()) {
- long eventId = cursor.getLong(event_id_idx);
- ContentValues values = new ContentValues();
- String selection = CalendarAlerts.STATE + "=" + CalendarAlerts.STATE_FIRED +
- " AND " + CalendarAlerts.EVENT_ID + "=" + eventId +
- " AND " + CalendarAlerts.BEGIN + "=" + startTime;
- values.put(CalendarAlerts.STATE, CalendarAlerts.STATE_DISMISSED);
- if (resolver.update(CalendarAlerts.CONTENT_URI, values, selection, null) > 0) {
- updated |= true;
+ Uri uri = asSync(Events.CONTENT_URI, GOOGLE_ACCOUNT_TYPE,
+ intent.getStringExtra(ACCOUNT_NAME));
+ Cursor cursor = resolver.query(uri, EVENT_SYNC_PROJECTION,
+ Events._SYNC_ID + " = '" + syncId + "'", null, null);
+ try {
+ int event_id_idx = cursor.getColumnIndex(Events._ID);
+ cursor.moveToFirst();
+ if (event_id_idx != -1 && !cursor.isAfterLast()) {
+ long eventId = cursor.getLong(event_id_idx);
+ ContentValues values = new ContentValues();
+ String selection = CalendarAlerts.STATE + "=" +
+ CalendarAlerts.STATE_FIRED + " AND " +
+ CalendarAlerts.EVENT_ID + "=" + eventId + " AND " +
+ CalendarAlerts.BEGIN + "=" + startTime;
+ values.put(CalendarAlerts.STATE, CalendarAlerts.STATE_DISMISSED);
+ int rows = resolver.update(CalendarAlerts.CONTENT_URI, values,
+ selection, null);
+ updated = rows > 0;
+ }
+ } finally {
+ cursor.close();
}
}
- } finally {
- cursor.close();
- }
- }
- if (updated) {
- Log.d(TAG, "updating alarm state");
- AlertService.updateAlertNotification(context);
- }
+ if (updated) {
+ Log.d(TAG, "updating alarm state");
+ AlertService.updateAlertNotification(context);
+ }
+ return null;
+ }
+ }.execute(new Pair<Context, Intent>(context, intent));
}
}