diff options
author | Live Channels Team <no-reply@google.com> | 2018-05-07 18:56:14 -0700 |
---|---|---|
committer | Nick Chalko <nchalko@google.com> | 2018-05-18 10:26:12 -0700 |
commit | a21e1889617314d7db73b12370a01f45a8693980 (patch) | |
tree | 408cde3f39fe30a8979fea841338439ecc0811bf | |
parent | 81ec1ad1ff3fdc1d53c376690bfb2dba649622f9 (diff) | |
download | TV-a21e1889617314d7db73b12370a01f45a8693980.tar.gz |
Refactor AsyncDbDvrTask.
PiperOrigin-RevId: 195758271
Change-Id: I4dd9d76f4cf324e5a02386c72d4f85b3a6ff3ef3
-rw-r--r-- | src/com/android/tv/dvr/DvrDataManagerImpl.java | 48 | ||||
-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; } |