diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesChartFragment.java index cd191210ed..8832cc3901 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesChartFragment.java @@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.activities; import android.content.Context; import android.content.Intent; +import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -94,7 +95,7 @@ public class ActivitySummariesChartFragment extends AbstractActivityChartFragmen this.gbDevice = gbDevice; if (this.view != null) { setupChart(); - createLocalRefreshTask("getting hr and activity", getActivity()).execute(); + createLocalRefreshTask("getting hr and activity", getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } } @@ -117,7 +118,7 @@ public class ActivitySummariesChartFragment extends AbstractActivityChartFragmen this.view = view; if (this.trackFile != null || this.gbDevice != null) { setupChart(); - createLocalRefreshTask("getting hr and activity", getActivity()).execute(); + createLocalRefreshTask("getting hr and activity", getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } } @@ -218,7 +219,7 @@ public class ActivitySummariesChartFragment extends AbstractActivityChartFragmen public class RefreshTask extends DBAccess { public RefreshTask(String task, Context context) { - super(task, context); + super(task, context, false); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/BatteryInfoChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/BatteryInfoChartFragment.java index b9ea582c5e..49f6292f5c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/BatteryInfoChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/BatteryInfoChartFragment.java @@ -17,6 +17,7 @@ package nodomain.freeyourgadget.gadgetbridge.activities; import android.content.Context; +import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -82,7 +83,7 @@ public class BatteryInfoChartFragment extends AbstractGBFragment { this.gbDevice = gbDevice; this.batteryIndex = batteryIndex; try { - createRefreshTask("Visualizing data", getActivity()).execute(); + createRefreshTask("Visualizing data", getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } catch (Exception e) { LOG.debug("Unable to fill charts data right now:", e); } @@ -136,7 +137,7 @@ public class BatteryInfoChartFragment extends AbstractGBFragment { mChart = rootView.findViewById(R.id.activitysleepchart); if (this.gbDevice != null) { setupChart(); - createRefreshTask("Visualizing data", getActivity()).execute(); + createRefreshTask("Visualizing data", getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } return rootView; } @@ -213,7 +214,7 @@ public class BatteryInfoChartFragment extends AbstractGBFragment { public class RefreshTask extends DBAccess { public RefreshTask(String task, Context context) { - super(task, context); + super(task, context, false); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DevicesFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DevicesFragment.java index bb475c5e50..21bfab4e4e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DevicesFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/DevicesFragment.java @@ -23,6 +23,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; @@ -77,7 +78,7 @@ public class DevicesFragment extends Fragment { case DeviceManager.ACTION_DEVICES_CHANGED: case GBApplication.ACTION_NEW_DATA: if (action.equals(GBApplication.ACTION_NEW_DATA)) { - createRefreshTask("get activity data", requireContext(), device).execute(); + createRefreshTask("get activity data", requireContext(), device).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } if (device != null) { // Refresh only this device @@ -129,7 +130,7 @@ public class DevicesFragment extends Fragment { @Override public void run() { if (getContext() != null) { - createRefreshTask("get activity data", getContext(), null).execute(); + createRefreshTask("get activity data", getContext(), null).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } } }); @@ -242,7 +243,7 @@ public class DevicesFragment extends Fragment { private final GBDevice device; public RefreshTask(final String task, final Context context, final GBDevice device) { - super(task, context); + super(task, context, false); this.device = device; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java index f6c18a0ad0..3330d03390 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java @@ -343,7 +343,7 @@ public abstract class AbstractChartFragment extends Abstra if (refreshTask != null && refreshTask.getStatus() != AsyncTask.Status.FINISHED) { refreshTask.cancel(true); } - refreshTask = createRefreshTask("Visualizing data", getActivity()).execute(); + refreshTask = createRefreshTask("Visualizing data", getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } } } @@ -357,7 +357,7 @@ public abstract class AbstractChartFragment extends Abstra private D chartsData; public RefreshTask(final String task, final Context context) { - super(task, context); + super(task, context, false); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityListingDashboard.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityListingDashboard.java index b009681839..bdf4ac3ac9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityListingDashboard.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityListingDashboard.java @@ -18,6 +18,7 @@ package nodomain.freeyourgadget.gadgetbridge.activities.charts; import android.app.DatePickerDialog; import android.content.Context; +import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -161,7 +162,7 @@ public class ActivityListingDashboard extends MaterialDialogFragment { battery_status_time_span_text.setText(text); battery_status_date_from_text.setText(DateTimeUtils.formatDate(new Date(timeFrom * 1000L))); battery_status_date_to_text.setText(DateTimeUtils.formatDate(new Date(timeTo * 1000L))); - createRefreshTask("Visualizing step sessions", getActivity()).execute(); + createRefreshTask("Visualizing step sessions", getActivity()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @Override @@ -301,7 +302,7 @@ public class ActivityListingDashboard extends MaterialDialogFragment { public class RefreshTask extends DBAccess { public RefreshTask(String task, Context context) { - super(task, context); + super(task, context, false); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/StepStreaksDashboard.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/StepStreaksDashboard.java index 39f138ee8e..b101003556 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/StepStreaksDashboard.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/StepStreaksDashboard.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.net.Uri; +import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.os.Parcel; @@ -142,8 +143,8 @@ public class StepStreaksDashboard extends MaterialDialogFragment { populateData(); } } - createTaskCalculateLatestStepsStreak("Visualizing data current", getActivity(), PERIOD_CURRENT).execute(); - createTaskCalculateLatestStepsStreak("Visualizing data maximum", getActivity(), PERIOD_TOTALS).execute(); + createTaskCalculateLatestStepsStreak("Visualizing data current", getActivity(), PERIOD_CURRENT).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + createTaskCalculateLatestStepsStreak("Visualizing data maximum", getActivity(), PERIOD_TOTALS).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } void indicate_progress(boolean inProgress) { @@ -242,7 +243,7 @@ public class StepStreaksDashboard extends MaterialDialogFragment { String period; public TaskCalculateLatestStepsStreak(String taskName, Context context, String period) { - super(taskName, context); + super(taskName, context, false); this.period = period; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBAccess.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBAccess.java index 4847a8ee62..b50e0a5d70 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBAccess.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/DBAccess.java @@ -35,10 +35,12 @@ public abstract class DBAccess extends AsyncTask { private final String mTask; private final Context mContext; private Exception mError; + private final boolean mForWrite; - public DBAccess(String task, Context context) { + public DBAccess(String task, Context context, boolean forWrite) { mTask = task; mContext = context; + mForWrite = forWrite; } public Context getContext() { @@ -49,7 +51,7 @@ public abstract class DBAccess extends AsyncTask { @Override protected Object doInBackground(Object[] params) { - try (DBHandler db = GBApplication.acquireDB()) { + try (DBHandler db = (mForWrite ? GBApplication.acquireDB() : GBApplication.acquireDbReadOnly())) { doInBackground(db); } catch (Exception e) { LOG.error("Error during DBAccess for {}", mTask, e); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventBatteryInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventBatteryInfo.java index d2ad9e4a34..f94d2f4571 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventBatteryInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/deviceevents/GBDeviceEventBatteryInfo.java @@ -144,7 +144,7 @@ public class GBDeviceEventBatteryInfo extends GBDeviceEvent { GBDevice gbDevice; public StoreDataTask(String task, Context context, GBDevice device, GBDeviceEventBatteryInfo deviceEvent) { - super(task, context); + super(task, context, true); this.deviceEvent = deviceEvent; this.gbDevice = device; }