summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fietz <Martin.Fietz@gmail.com>2016-03-22 18:50:50 +0100
committerMartin Fietz <Martin.Fietz@gmail.com>2016-03-22 23:34:31 +0100
commit62e2095a5ab83ee2361ce0051d8a9bf2c170f0e5 (patch)
tree24e33a6dfede0e28905587938d02c619cf71e317
parent33567fe7d7f6c22806c9146947303d2b4d4c7acf (diff)
downloadAntennaPod-62e2095a5ab83ee2361ce0051d8a9bf2c170f0e5.zip
Close DB
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 2bde6da9d..c8df0f572 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -17,6 +17,7 @@ import android.util.Log;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
import de.danoeh.antennapod.core.R;
import de.danoeh.antennapod.core.event.ProgressEvent;
@@ -304,7 +305,7 @@ public class PodDBAdapter {
private static SQLiteDatabase db;
private static Context context;
private static PodDBHelper dbHelper;
- private static int counter = 0;
+ private static AtomicInteger counter = new AtomicInteger(0);
public static void init(Context context) {
PodDBAdapter.context = context.getApplicationContext();
@@ -319,12 +320,13 @@ public class PodDBAdapter {
private PodDBAdapter() {}
- public PodDBAdapter open() {
+ public synchronized PodDBAdapter open() {
+ int adapters = counter.incrementAndGet();
+ Log.v(TAG, "Opening DB #" + adapters);
if (db == null || !db.isOpen() || db.isReadOnly()) {
- Log.v(TAG, "Opening DB");
try {
db = dbHelper.getWritableDatabase();
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
db.enableWriteAheadLogging();
}
} catch (SQLException ex) {
@@ -335,8 +337,13 @@ public class PodDBAdapter {
return this;
}
- public void close() {
- // do nothing
+ public synchronized void close() {
+ int adapters = counter.decrementAndGet();
+ Log.v(TAG, "Closing DB #" + adapters);
+ if(adapters == 0) {
+ Log.v(TAG, "Closing DB, really");
+ db.close();
+ }
}
public static boolean deleteDatabase() {