Browse Source

Merge pull request #3365 from nextcloud/trashbinCheckIfActive

Trashbin: do UI changes of async only if activity is still up and running
Tobias Kaminsky 6 năm trước cách đây
mục cha
commit
23b91eb2e8

+ 26 - 13
src/main/java/com/owncloud/android/ui/trashbin/TrashbinActivity.java

@@ -85,6 +85,8 @@ public class TrashbinActivity extends FileActivity implements TrashbinActivityIn
     private TrashbinListAdapter trashbinListAdapter;
     private TrashbinPresenter trashbinPresenter;
 
+    private boolean active = false;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -107,6 +109,8 @@ public class TrashbinActivity extends FileActivity implements TrashbinActivityIn
     protected void onStart() {
         super.onStart();
 
+        active = true;
+
         setupContent();
     }
 
@@ -229,6 +233,8 @@ public class TrashbinActivity extends FileActivity implements TrashbinActivityIn
     @Override
     protected void onPause() {
         super.onPause();
+        active = false;
+
         trashbinListAdapter.cancelAllPendingTasks();
     }
 
@@ -253,13 +259,17 @@ public class TrashbinActivity extends FileActivity implements TrashbinActivityIn
 
     @Override
     public void showTrashbinFolder(List<Object> trashbinFiles) {
-        trashbinListAdapter.setTrashbinFiles(trashbinFiles, true);
-        swipeListRefreshLayout.setRefreshing(false);
+        if (active) {
+            trashbinListAdapter.setTrashbinFiles(trashbinFiles, true);
+            swipeListRefreshLayout.setRefreshing(false);
+        }
     }
 
     @Override
     public void removeFile(TrashbinFile file) {
-        trashbinListAdapter.removeFile(file);
+        if (active) {
+            trashbinListAdapter.removeFile(file);
+        }
     }
 
     @Override
@@ -269,23 +279,26 @@ public class TrashbinActivity extends FileActivity implements TrashbinActivityIn
 
     @Override
     public void showSnackbarError(int message, TrashbinFile file) {
-        swipeListRefreshLayout.setRefreshing(false);
-        Snackbar.make(recyclerView, String.format(getString(message), file.getFileName()), Snackbar.LENGTH_LONG).show();
+        if (active) {
+            swipeListRefreshLayout.setRefreshing(false);
+            Snackbar.make(recyclerView, String.format(getString(message), file.getFileName()), Snackbar.LENGTH_LONG)
+                .show();
+        }
     }
 
     @Override
     public void showError(int message) {
-        if (swipeListRefreshLayout != null) {
+        if (active) {
             swipeListRefreshLayout.setRefreshing(false);
-        }
 
-        if (emptyContentMessage != null && emptyContentHeadline != null && emptyContentIcon != null) {
-            emptyContentHeadline.setText(R.string.common_error);
-            emptyContentIcon.setImageDrawable(getResources().getDrawable(R.drawable.ic_list_empty_error));
-            emptyContentMessage.setText(message);
+            if (emptyContentMessage != null) {
+                emptyContentHeadline.setText(R.string.common_error);
+                emptyContentIcon.setImageDrawable(getResources().getDrawable(R.drawable.ic_list_empty_error));
+                emptyContentMessage.setText(message);
 
-            emptyContentMessage.setVisibility(View.VISIBLE);
-            emptyContentIcon.setVisibility(View.VISIBLE);
+                emptyContentMessage.setVisibility(View.VISIBLE);
+                emptyContentIcon.setVisibility(View.VISIBLE);
+            }
         }
     }
 }