Browse Source

Some progress on mitigating persistance issues

Mario Danic 8 năm trước cách đây
mục cha
commit
2be9cec609

+ 1 - 0
src/com/owncloud/android/MainApp.java

@@ -151,6 +151,7 @@ public class MainApp extends Application {
             @Override
             public void onActivityDestroyed(Activity activity) {
                 Log_OC.d(activity.getClass().getSimpleName(), "onDestroy() ending" );
+                MainApp.getSyncedFolderObserverService().syncToDisk(false);
             }
         });
     }

+ 18 - 4
src/com/owncloud/android/services/observer/SyncedFolderObserverService.java

@@ -205,8 +205,7 @@ public class SyncedFolderObserverService extends Service {
 
     }
 
-    @Override
-    public void onDestroy() {
+    public void syncToDisk(boolean destructive) {
         for (SyncedFolder syncedFolder : syncedFolderMap.keySet()) {
             FileAlterationMagicObserver obs = syncedFolderMap.get(syncedFolder);
             for (int i = 0; i < pairArrayList.size(); i++) {
@@ -218,8 +217,11 @@ public class SyncedFolderObserverService extends Service {
                     break;
                 }
             }
-            monitor.removeObserver(obs);
-            syncedFolderMap.remove(obs);
+
+            if (destructive) {
+                monitor.removeObserver(obs);
+                syncedFolderMap.remove(obs);
+            }
 
             try {
                 obs.destroy();
@@ -228,9 +230,21 @@ public class SyncedFolderObserverService extends Service {
             }
         }
 
+        if (destructive) {
+            try {
+                monitor.stop();
+            } catch (Exception e) {
+                Log_OC.d(TAG, "Something went very wrong at onDestroy");
+            }
+        }
         writePersistenceEntries(false, file);
     }
 
+    @Override
+    public void onDestroy() {
+        syncToDisk(true);
+    }
+
     /**
      * Restart oberver if it is enabled
      * If syncedFolder exists already, use it, otherwise create new observer