From 1b011f71de79cb5601425216aeaf84f5a991037f Mon Sep 17 00:00:00 2001 From: Thomas Hirsch <84n4n4@gmail.com> Date: Mon, 22 Apr 2019 18:52:41 +0200 Subject: [PATCH] CATROID-240 - concurrency / task blocking issue with UploadStatusPollingTask --- .../ui/recyclerview/activity/ProjectUploadActivity.java | 9 +++++++-- .../ui/recyclerview/fragment/ProjectListFragment.java | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/activity/ProjectUploadActivity.java b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/activity/ProjectUploadActivity.java index e65026d03a4..bcd8e635c85 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/activity/ProjectUploadActivity.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/activity/ProjectUploadActivity.java @@ -279,6 +279,8 @@ private void showProgressDialogAndUploadProject() { final int notificationId = StatusBarNotificationManager.getInstance() .createUploadNotification(this, name); + UploadStatusPollingTask uploadStatusPollingTask = new UploadStatusPollingTask(); + uploadProgressDialog = new AlertDialog.Builder(this) .setTitle(getString(R.string.upload_project_dialog_title)) .setView(R.layout.dialog_upload_project_progress) @@ -286,6 +288,7 @@ private void showProgressDialogAndUploadProject() { .setNegativeButton(R.string.done, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { + uploadStatusPollingTask.cancel(false); finish(); } }) @@ -306,8 +309,7 @@ public void onClick(DialogInterface dialog, int which) { startService(intent); - new UploadStatusPollingTask() - .execute(); + uploadStatusPollingTask.execute(); int numberOfUploadedProjects = sharedPreferences.getInt(NUMBER_OF_UPLOADED_PROJECTS, 0) + 1; sharedPreferences.edit() @@ -418,6 +420,9 @@ private class UploadStatusPollingTask extends AsyncTask { @Override protected Void doInBackground(Void... voids) { while (StatusBarNotificationManager.getInstance().getProgressPercent() != 100) { + if (isCancelled()) { + break; + } try { Thread.sleep(100); } catch (InterruptedException e) { diff --git a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/fragment/ProjectListFragment.java b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/fragment/ProjectListFragment.java index 493ac81789b..5da805821d0 100644 --- a/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/fragment/ProjectListFragment.java +++ b/catroid/src/main/java/org/catrobat/catroid/ui/recyclerview/fragment/ProjectListFragment.java @@ -319,6 +319,9 @@ public void renameItem(ProjectData item, String name) { @Override public void onLoadFinished(boolean success) { + if (getActivity() == null) { + return; + } if (success) { Intent intent = new Intent(getActivity(), ProjectActivity.class); intent.putExtra(ProjectActivity.EXTRA_FRAGMENT_POSITION, ProjectActivity.FRAGMENT_SCENES);