From 28ea31cd4c0e973b34c312478ed84241a90a38d2 Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 28 Mar 2019 15:12:58 +0000 Subject: [PATCH] Use Closeable interface for DownloadStateCursor to simplify closing. PiperOrigin-RevId: 240775823 --- .../exoplayer2/demo/DownloadTracker.java | 4 +--- .../exoplayer2/offline/DownloadManager.java | 20 +++++++------------ .../offline/DownloadStateCursor.java | 10 ++++++---- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java index 73e881208d..b484c1e92f 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java @@ -140,13 +140,11 @@ public class DownloadTracker implements DownloadManager.Listener { // Internal methods private void loadDownloads() { - try { - DownloadStateCursor loadedDownloadStates = downloadIndex.getDownloadStates(); + try (DownloadStateCursor loadedDownloadStates = downloadIndex.getDownloadStates()) { while (loadedDownloadStates.moveToNext()) { DownloadState downloadState = loadedDownloadStates.getDownloadState(); downloadStates.put(downloadState.uri, downloadState); } - loadedDownloadStates.close(); } catch (IOException e) { Log.w(TAG, "Failed to query download states", e); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java index cc124489ec..5f4a0eae61 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java @@ -601,15 +601,13 @@ public final class DownloadManager { fileIOHandler.post( () -> { DownloadState[] loadedStates; - DownloadStateCursor cursor = null; - try { - cursor = - downloadIndex.getDownloadStates( - STATE_QUEUED, - STATE_STOPPED, - STATE_DOWNLOADING, - STATE_REMOVING, - STATE_RESTARTING); + try (DownloadStateCursor cursor = + downloadIndex.getDownloadStates( + STATE_QUEUED, + STATE_STOPPED, + STATE_DOWNLOADING, + STATE_REMOVING, + STATE_RESTARTING)) { loadedStates = new DownloadState[cursor.getCount()]; for (int i = 0, length = loadedStates.length; i < length; i++) { cursor.moveToNext(); @@ -619,10 +617,6 @@ public final class DownloadManager { } catch (Throwable e) { Log.e(TAG, "Download state loading failed.", e); loadedStates = new DownloadState[0]; - } finally { - if (cursor != null) { - cursor.close(); - } } final DownloadState[] states = loadedStates; handler.post( diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadStateCursor.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadStateCursor.java index 06511c8930..3f9201c0e9 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadStateCursor.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadStateCursor.java @@ -15,8 +15,10 @@ */ package com.google.android.exoplayer2.offline; +import java.io.Closeable; + /** Provides random read-write access to the result set returned by a database query. */ -public interface DownloadStateCursor { +public interface DownloadStateCursor extends Closeable { /** Returns the DownloadState at the current position. */ DownloadState getDownloadState(); @@ -119,9 +121,9 @@ public interface DownloadStateCursor { return getPosition() == getCount(); } - /** Closes the Cursor, releasing all of its resources and making it completely invalid. */ - void close(); - /** Returns whether the cursor is closed */ boolean isClosed(); + + @Override + void close(); }