aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLive Channels Team <no-reply@google.com>2018-05-07 18:56:14 -0700
committerNick Chalko <nchalko@google.com>2018-05-18 10:26:12 -0700
commita21e1889617314d7db73b12370a01f45a8693980 (patch)
tree408cde3f39fe30a8979fea841338439ecc0811bf
parent81ec1ad1ff3fdc1d53c376690bfb2dba649622f9 (diff)
downloadTV-a21e1889617314d7db73b12370a01f45a8693980.tar.gz
Refactor AsyncDbDvrTask.
PiperOrigin-RevId: 195758271 Change-Id: I4dd9d76f4cf324e5a02386c72d4f85b3a6ff3ef3
-rw-r--r--src/com/android/tv/dvr/DvrDataManagerImpl.java48
-rw-r--r--src/com/android/tv/dvr/provider/DvrDbFuture.java (renamed from src/com/android/tv/dvr/provider/AsyncDvrDbTask.java)94
2 files changed, 66 insertions, 76 deletions
diff --git a/src/com/android/tv/dvr/DvrDataManagerImpl.java b/src/com/android/tv/dvr/DvrDataManagerImpl.java
index 9a18ac00..5e07c748 100644
--- a/src/com/android/tv/dvr/DvrDataManagerImpl.java
+++ b/src/com/android/tv/dvr/DvrDataManagerImpl.java
@@ -48,14 +48,14 @@ import com.android.tv.dvr.data.RecordedProgram;
import com.android.tv.dvr.data.ScheduledRecording;
import com.android.tv.dvr.data.ScheduledRecording.RecordingState;
import com.android.tv.dvr.data.SeriesRecording;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncAddScheduleTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncAddSeriesRecordingTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncDeleteScheduleTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncDeleteSeriesRecordingTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncDvrQueryScheduleTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncDvrQuerySeriesRecordingTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncUpdateScheduleTask;
-import com.android.tv.dvr.provider.AsyncDvrDbTask.AsyncUpdateSeriesRecordingTask;
+import com.android.tv.dvr.provider.DvrDbFuture.AddScheduleFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.AddSeriesRecordingFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.DeleteScheduleFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.DeleteSeriesRecordingFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.DvrQueryScheduleFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.DvrQuerySeriesRecordingFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.UpdateScheduleFuture;
+import com.android.tv.dvr.provider.DvrDbFuture.UpdateSeriesRecordingFuture;
import com.android.tv.dvr.provider.DvrDbSync;
import com.android.tv.dvr.recorder.SeriesRecordingScheduler;
import com.android.tv.util.AsyncDbTask;
@@ -199,8 +199,8 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
public void start() {
mInputManager.addCallback(mInputCallback);
mStorageStatusManager.addListener(mStorageMountChangedListener);
- AsyncDvrQuerySeriesRecordingTask dvrQuerySeriesRecordingTask =
- new AsyncDvrQuerySeriesRecordingTask(mContext);
+ DvrQuerySeriesRecordingFuture dvrQuerySeriesRecordingTask =
+ new DvrQuerySeriesRecordingFuture(mContext);
ListenableFuture<List<SeriesRecording>> dvrQuerySeriesRecordingFuture =
dvrQuerySeriesRecordingTask.executeOnDbThread(
new FutureCallback<List<SeriesRecording>>() {
@@ -237,7 +237,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
}
});
mPendingDvrFuture.add(dvrQuerySeriesRecordingFuture);
- AsyncDvrQueryScheduleTask dvrQueryScheduleTask = new AsyncDvrQueryScheduleTask(mContext);
+ DvrQueryScheduleFuture dvrQueryScheduleTask = new DvrQueryScheduleFuture(mContext);
ListenableFuture<List<ScheduledRecording>> dvrQueryScheduleFuture =
dvrQueryScheduleTask.executeOnDbThread(
new FutureCallback<List<ScheduledRecording>>() {
@@ -636,7 +636,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
if (mDvrLoadFinished) {
notifyScheduledRecordingAdded(schedules);
}
- ListenableFuture addScheduleFuture = new AsyncAddScheduleTask(mContext)
+ ListenableFuture addScheduleFuture = new AddScheduleFuture(mContext)
.executeOnDbThread(removeFromSetOnCompletion, schedules);
mNoStopFuture.add(addScheduleFuture);
removeDeletedSchedules(schedules);
@@ -658,7 +658,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
notifySeriesRecordingAdded(seriesRecordings);
}
ListenableFuture addSeriesRecordingFuture =
- new AsyncAddSeriesRecordingTask(mContext).executeOnDbThread(
+ new AddSeriesRecordingFuture(mContext).executeOnDbThread(
removeFromSetOnCompletion, seriesRecordings);
mNoStopFuture.add(addSeriesRecordingFuture);
}
@@ -717,13 +717,13 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
}
}
if (!schedulesToDelete.isEmpty()) {
- ListenableFuture deleteScheduleFuture = new AsyncDeleteScheduleTask(mContext)
+ ListenableFuture deleteScheduleFuture = new DeleteScheduleFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, ScheduledRecording.toArray(schedulesToDelete));
mNoStopFuture.add(deleteScheduleFuture);
}
if (!schedulesNotToDelete.isEmpty()) {
- ListenableFuture updateScheduleFuture = new AsyncUpdateScheduleTask(mContext)
+ ListenableFuture updateScheduleFuture = new UpdateScheduleFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, ScheduledRecording.toArray(schedulesNotToDelete));
mNoStopFuture.add(updateScheduleFuture);
@@ -764,7 +764,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
if (mDvrLoadFinished) {
notifySeriesRecordingRemoved(seriesRecordings);
}
- ListenableFuture deleteSeriesRecordingFuture = new AsyncDeleteSeriesRecordingTask(mContext)
+ ListenableFuture deleteSeriesRecordingFuture = new DeleteSeriesRecordingFuture(mContext)
.executeOnDbThread(removeFromSetOnCompletion, seriesRecordings);
mNoStopFuture.add(deleteSeriesRecordingFuture);
removeDeletedSchedules(seriesRecordings);
@@ -819,7 +819,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
notifyScheduledRecordingStatusChanged(scheduleArray);
}
if (updateDb) {
- ListenableFuture updateScheduleFuture = new AsyncUpdateScheduleTask(mContext)
+ ListenableFuture updateScheduleFuture = new UpdateScheduleFuture(mContext)
.executeOnDbThread(removeFromSetOnCompletion, scheduleArray);
mNoStopFuture.add(updateScheduleFuture);
}
@@ -845,7 +845,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
if (mDvrLoadFinished) {
notifySeriesRecordingChanged(seriesRecordings);
}
- ListenableFuture updateSeriesRecordingFuture = new AsyncUpdateSeriesRecordingTask(mContext)
+ ListenableFuture updateSeriesRecordingFuture = new UpdateSeriesRecordingFuture(mContext)
.executeOnDbThread(removeFromSetOnCompletion, seriesRecordings);
mNoStopFuture.add(updateSeriesRecordingFuture);
}
@@ -865,7 +865,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
}
}
if (!schedulesToDelete.isEmpty()) {
- ListenableFuture deleteScheduleFuture = new AsyncDeleteScheduleTask(mContext)
+ ListenableFuture deleteScheduleFuture = new DeleteScheduleFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, ScheduledRecording.toArray(schedulesToDelete));
mNoStopFuture.add(deleteScheduleFuture);
@@ -888,7 +888,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
}
}
if (!schedulesToDelete.isEmpty()) {
- ListenableFuture deleteScheduleFuture = new AsyncDeleteScheduleTask(mContext)
+ ListenableFuture deleteScheduleFuture = new DeleteScheduleFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, ScheduledRecording.toArray(schedulesToDelete));
mNoStopFuture.add(deleteScheduleFuture);
@@ -947,7 +947,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
for (SeriesRecording r : removedSeriesRecordings) {
mSeriesRecordingsForRemovedInput.remove(r.getId());
}
- ListenableFuture deleteSeriesRecordingFuture = new AsyncDeleteSeriesRecordingTask(mContext)
+ ListenableFuture deleteSeriesRecordingFuture = new DeleteSeriesRecordingFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, SeriesRecording.toArray(removedSeriesRecordings));
mNoStopFuture.add(deleteSeriesRecordingFuture);
@@ -1053,11 +1053,11 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
i.remove();
}
}
- ListenableFuture deleteScheduleFuture = new AsyncDeleteScheduleTask(mContext)
+ ListenableFuture deleteScheduleFuture = new DeleteScheduleFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, ScheduledRecording.toArray(schedulesToDelete));
mNoStopFuture.add(deleteScheduleFuture);
- ListenableFuture deleteSeriesRecordingFuture = new AsyncDeleteSeriesRecordingTask(mContext)
+ ListenableFuture deleteSeriesRecordingFuture = new DeleteSeriesRecordingFuture(mContext)
.executeOnDbThread(
removeFromSetOnCompletion, SeriesRecording.toArray(seriesRecordingsToDelete));
mNoStopFuture.add(deleteSeriesRecordingFuture);
@@ -1092,7 +1092,7 @@ public class DvrDataManagerImpl extends BaseDvrDataManager {
if (!removedSeriesRecordings.isEmpty()) {
SeriesRecording[] removed = SeriesRecording.toArray(removedSeriesRecordings);
ListenableFuture deleteSeriesRecordingFuture =
- new AsyncDeleteSeriesRecordingTask(mContext)
+ new DeleteSeriesRecordingFuture(mContext)
.executeOnDbThread(removeFromSetOnCompletion, removed);
mNoStopFuture.add(deleteSeriesRecordingFuture);
if (mDvrLoadFinished) {
diff --git a/src/com/android/tv/dvr/provider/AsyncDvrDbTask.java b/src/com/android/tv/dvr/provider/DvrDbFuture.java
index b75349c8..ae8c480b 100644
--- a/src/com/android/tv/dvr/provider/AsyncDvrDbTask.java
+++ b/src/com/android/tv/dvr/provider/DvrDbFuture.java
@@ -18,7 +18,6 @@ package com.android.tv.dvr.provider;
import android.content.Context;
import android.database.Cursor;
-import android.os.AsyncTask;
import android.support.annotation.Nullable;
import android.util.Log;
import com.android.tv.common.concurrent.NamedThreadFactory;
@@ -36,26 +35,19 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
-/** {@link AsyncTask} that defaults to executing on its own single threaded Executor Service. */
-public abstract class AsyncDvrDbTask<ParamsT, ResultT> {
+/** {@link DvrDbFuture} that defaults to executing on its own single threaded Executor Service. */
+public abstract class DvrDbFuture<ParamsT, ResultT> {
private static final NamedThreadFactory THREAD_FACTORY =
- new NamedThreadFactory(AsyncDvrDbTask.class.getSimpleName());
+ new NamedThreadFactory(DvrDbFuture.class.getSimpleName());
private static final ListeningExecutorService DB_EXECUTOR =
MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor(THREAD_FACTORY));
private static DvrDatabaseHelper sDbHelper;
private ListenableFuture<ResultT> mFuture;
- private static synchronized DvrDatabaseHelper initializeDbHelper(Context context) {
- if (sDbHelper == null) {
- sDbHelper = new DvrDatabaseHelper(context.getApplicationContext());
- }
- return sDbHelper;
- }
-
final Context mContext;
- private AsyncDvrDbTask(Context context) {
+ private DvrDbFuture(Context context) {
mContext = context;
}
@@ -63,76 +55,74 @@ public abstract class AsyncDvrDbTask<ParamsT, ResultT> {
@SafeVarargs
public final ListenableFuture<ResultT> executeOnDbThread(
FutureCallback<ResultT> callback, ParamsT... params) {
- mFuture = DB_EXECUTOR.submit(() -> doInBackground(params));
+ if (sDbHelper == null) {
+ sDbHelper = new DvrDatabaseHelper(mContext.getApplicationContext());
+ }
+ mFuture = DB_EXECUTOR.submit(() -> dbHelperInBackground(params));
Futures.addCallback(mFuture, callback, MainThreadExecutor.getInstance());
return mFuture;
}
- protected final ResultT doInBackground(ParamsT... params) {
- initializeDbHelper(mContext);
- return doInDvrBackground(params);
- }
-
- /** Executes in the background after {@link #initializeDbHelper(Context)} */
+ /** Executes in the background after initializing DbHelper} */
@Nullable
- protected abstract ResultT doInDvrBackground(ParamsT... params);
+ protected abstract ResultT dbHelperInBackground(ParamsT... params);
public final boolean isCancelled() {
return mFuture.isCancelled();
}
/** Inserts schedules. */
- public static class AsyncAddScheduleTask
- extends AsyncDvrDbTask<ScheduledRecording, Void> {
- public AsyncAddScheduleTask(Context context) {
+ public static class AddScheduleFuture
+ extends DvrDbFuture<ScheduledRecording, Void> {
+ public AddScheduleFuture(Context context) {
super(context);
}
@Override
- protected final Void doInDvrBackground(ScheduledRecording... params) {
+ protected final Void dbHelperInBackground(ScheduledRecording... params) {
sDbHelper.insertSchedules(params);
return null;
}
}
/** Update schedules. */
- public static class AsyncUpdateScheduleTask
- extends AsyncDvrDbTask<ScheduledRecording, Void> {
- public AsyncUpdateScheduleTask(Context context) {
+ public static class UpdateScheduleFuture
+ extends DvrDbFuture<ScheduledRecording, Void> {
+ public UpdateScheduleFuture(Context context) {
super(context);
}
@Override
- protected final Void doInDvrBackground(ScheduledRecording... params) {
+ protected final Void dbHelperInBackground(ScheduledRecording... params) {
sDbHelper.updateSchedules(params);
return null;
}
}
/** Delete schedules. */
- public static class AsyncDeleteScheduleTask
- extends AsyncDvrDbTask<ScheduledRecording, Void> {
- public AsyncDeleteScheduleTask(Context context) {
+ public static class DeleteScheduleFuture
+ extends DvrDbFuture<ScheduledRecording, Void> {
+ public DeleteScheduleFuture(Context context) {
super(context);
}
@Override
- protected final Void doInDvrBackground(ScheduledRecording... params) {
+ protected final Void dbHelperInBackground(ScheduledRecording... params) {
sDbHelper.deleteSchedules(params);
return null;
}
}
/** Returns all {@link ScheduledRecording}s. */
- public static class AsyncDvrQueryScheduleTask
- extends AsyncDvrDbTask<Void, List<ScheduledRecording>> {
- public AsyncDvrQueryScheduleTask(Context context) {
+ public static class DvrQueryScheduleFuture
+ extends DvrDbFuture<Void, List<ScheduledRecording>> {
+ public DvrQueryScheduleFuture(Context context) {
super(context);
}
@Override
@Nullable
- protected final List<ScheduledRecording> doInDvrBackground(Void... params) {
+ protected final List<ScheduledRecording> dbHelperInBackground(Void... params) {
if (isCancelled()) {
return null;
}
@@ -147,59 +137,59 @@ public abstract class AsyncDvrDbTask<ParamsT, ResultT> {
}
/** Inserts series recordings. */
- public static class AsyncAddSeriesRecordingTask
- extends AsyncDvrDbTask<SeriesRecording, Void> {
- public AsyncAddSeriesRecordingTask(Context context) {
+ public static class AddSeriesRecordingFuture
+ extends DvrDbFuture<SeriesRecording, Void> {
+ public AddSeriesRecordingFuture(Context context) {
super(context);
}
@Override
- protected final Void doInDvrBackground(SeriesRecording... params) {
+ protected final Void dbHelperInBackground(SeriesRecording... params) {
sDbHelper.insertSeriesRecordings(params);
return null;
}
}
/** Update series recordings. */
- public static class AsyncUpdateSeriesRecordingTask
- extends AsyncDvrDbTask<SeriesRecording, Void> {
- public AsyncUpdateSeriesRecordingTask(Context context) {
+ public static class UpdateSeriesRecordingFuture
+ extends DvrDbFuture<SeriesRecording, Void> {
+ public UpdateSeriesRecordingFuture(Context context) {
super(context);
}
@Override
- protected final Void doInDvrBackground(SeriesRecording... params) {
+ protected final Void dbHelperInBackground(SeriesRecording... params) {
sDbHelper.updateSeriesRecordings(params);
return null;
}
}
/** Delete series recordings. */
- public static class AsyncDeleteSeriesRecordingTask
- extends AsyncDvrDbTask<SeriesRecording, Void> {
- public AsyncDeleteSeriesRecordingTask(Context context) {
+ public static class DeleteSeriesRecordingFuture
+ extends DvrDbFuture<SeriesRecording, Void> {
+ public DeleteSeriesRecordingFuture(Context context) {
super(context);
}
@Override
- protected final Void doInDvrBackground(SeriesRecording... params) {
+ protected final Void dbHelperInBackground(SeriesRecording... params) {
sDbHelper.deleteSeriesRecordings(params);
return null;
}
}
/** Returns all {@link SeriesRecording}s. */
- public static class AsyncDvrQuerySeriesRecordingTask
- extends AsyncDvrDbTask<Void, List<SeriesRecording>> {
+ public static class DvrQuerySeriesRecordingFuture
+ extends DvrDbFuture<Void, List<SeriesRecording>> {
private static final String TAG = "DvrQuerySeriesRecording";
- public AsyncDvrQuerySeriesRecordingTask(Context context) {
+ public DvrQuerySeriesRecordingFuture(Context context) {
super(context);
}
@Override
@Nullable
- protected final List<SeriesRecording> doInDvrBackground(Void... params) {
+ protected final List<SeriesRecording> dbHelperInBackground(Void... params) {
if (isCancelled()) {
return null;
}