diff --git a/src/main/java/de/dennisguse/opentracks/TrackDeleteActivity.java b/src/main/java/de/dennisguse/opentracks/TrackDeleteActivity.java index e479c6cb1..b674be516 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackDeleteActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackDeleteActivity.java @@ -17,7 +17,6 @@ package de.dennisguse.opentracks; import android.content.Intent; -import android.os.AsyncTask; import android.os.Bundle; import android.view.View; @@ -34,7 +33,7 @@ public class TrackDeleteActivity extends AbstractActivity { private long[] trackIds; - private DeleteAsyncTask deleteAsyncTask; + private Thread deleteThread; @Override public void onCreate(Bundle savedInstanceState) { @@ -44,20 +43,30 @@ public class TrackDeleteActivity extends AbstractActivity { Intent intent = getIntent(); trackIds = intent.getLongArrayExtra(EXTRA_TRACK_IDS); + deleteThread = new Thread(() -> { + ContentProviderUtils contentProviderUtils = new ContentProviderUtils(TrackDeleteActivity.this); - deleteAsyncTask = new DeleteAsyncTask(); + for (long id : trackIds) { + if (Thread.interrupted()) { + return; + } + contentProviderUtils.deleteTrack(TrackDeleteActivity.this, id); + } + + runOnUiThread(TrackDeleteActivity.this::onAsyncTaskCompleted); + }); } @Override protected void onStart() { super.onStart(); - deleteAsyncTask.execute(); + deleteThread.start(); } @Override protected void onStop() { super.onStop(); - deleteAsyncTask.cancel(true); + deleteThread.interrupt(); } @Override @@ -70,26 +79,4 @@ public class TrackDeleteActivity extends AbstractActivity { setResult(RESULT_OK); finish(); } - - class DeleteAsyncTask extends AsyncTask { - - @Override - protected Boolean doInBackground(Void... params) { - ContentProviderUtils contentProviderUtils = new ContentProviderUtils(TrackDeleteActivity.this); - - for (long id : trackIds) { - if (isCancelled()) { - return false; - } - contentProviderUtils.deleteTrack(TrackDeleteActivity.this, id); - } - - return true; - } - - @Override - protected void onPostExecute(Boolean result) { - TrackDeleteActivity.this.onAsyncTaskCompleted(); - } - } } diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index f104644ce..c8df7a818 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -495,9 +495,6 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe startActivity(intent); return true; case R.id.list_context_menu_delete: - if (trackIds.length > 1 && trackIds.length == listView.getCount()) { - trackIds = new long[]{-1L}; - } deleteTracks(trackIds); return true; case R.id.list_context_menu_select_all: diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java index 1ba045983..6dace2826 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/ConfirmDeleteDialogFragment.java @@ -43,7 +43,7 @@ public class ConfirmDeleteDialogFragment extends DialogFragment { /** * Create a new instance. * - * @param trackIds list of track ids to delete. To delete all, set to size 1 with trackIds[0] == -1L + * @param trackIds list of track ids to delete. */ public static void showDialog(FragmentManager fragmentManager, long[] trackIds) { Bundle bundle = new Bundle();