Browse Source

Merge pull request #2651 from nextcloud/resultOnStoppedAsync

Do not process result of async task if activity is stopped
Mario Đanić 6 years ago
parent
commit
f123c269f0

+ 7 - 0
src/main/java/com/owncloud/android/ui/activities/ActivitiesActivity.java

@@ -318,4 +318,11 @@ public class ActivitiesActivity extends FileActivity implements ActivityListInte
         swipeListRefreshLayout.post(() -> swipeListRefreshLayout.setRefreshing(isActive));
 
     }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+
+        mActionListener.stopLoadingActivity();
+    }
 }

+ 2 - 0
src/main/java/com/owncloud/android/ui/activities/ActivitiesContract.java

@@ -40,5 +40,7 @@ public interface ActivitiesContract {
     interface ActionListener {
         void loadActivities(String pageUrl);
         void openActivity(String fileUrl, BaseActivity baseActivity, boolean isSharingSupported);
+
+        void stopLoadingActivity();
     }
 }

+ 15 - 4
src/main/java/com/owncloud/android/ui/activities/ActivitiesPresenter.java

@@ -35,6 +35,7 @@ public class ActivitiesPresenter implements ActivitiesContract.ActionListener {
     private final ActivitiesContract.View activitiesView;
     private final ActivitiesRepository activitiesRepository;
     private final FilesRepository filesRepository;
+    private boolean activityStopped = false;
 
 
     ActivitiesPresenter(@NonNull ActivitiesRepository activitiesRepository,
@@ -52,14 +53,19 @@ public class ActivitiesPresenter implements ActivitiesContract.ActionListener {
             @Override
             public void onActivitiesLoaded(List<Object> activities, OwnCloudClient client,
                                            String nextPageUrl) {
-                activitiesView.setProgressIndicatorState(false);
-                activitiesView.showActivities(activities, client, nextPageUrl);
+
+                if (!activityStopped) {
+                    activitiesView.setProgressIndicatorState(false);
+                    activitiesView.showActivities(activities, client, nextPageUrl);
+                }
             }
 
             @Override
             public void onActivitiesLoadedError(String error) {
-                activitiesView.setProgressIndicatorState(false);
-                activitiesView.showActivitiesLoadError(error);
+                if (!activityStopped) {
+                    activitiesView.setProgressIndicatorState(false);
+                    activitiesView.showActivitiesLoadError(error);
+                }
             }
         });
     }
@@ -86,4 +92,9 @@ public class ActivitiesPresenter implements ActivitiesContract.ActionListener {
                     }
                 });
     }
+
+    @Override
+    public void stopLoadingActivity() {
+        activityStopped = true;
+    }
 }