SyncedFolderObserverService.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.owncloud.android.services.observer;
  2. import android.app.Service;
  3. import android.content.Intent;
  4. import android.os.Binder;
  5. import android.os.IBinder;
  6. import com.owncloud.android.MainApp;
  7. import com.owncloud.android.datamodel.SyncedFolder;
  8. import com.owncloud.android.datamodel.SyncedFolderProvider;
  9. import com.owncloud.android.lib.common.utils.Log_OC;
  10. import java.util.HashMap;
  11. public class SyncedFolderObserverService extends Service {
  12. private static final String TAG = "SyncedFolderObserverService";
  13. private SyncedFolderProvider mProvider;
  14. private HashMap<String, SyncedFolderObserver> syncedFolderMap = new HashMap<>();
  15. private final IBinder mBinder = new SyncedFolderObserverBinder();
  16. @Override
  17. public void onCreate() {
  18. mProvider = new SyncedFolderProvider(MainApp.getAppContext().getContentResolver());
  19. }
  20. @Override
  21. public int onStartCommand(Intent intent, int flags, int startId) {
  22. Log_OC.d(TAG, "start");
  23. for (SyncedFolder syncedFolder : mProvider.getSyncedFolders()) {
  24. if (syncedFolder.isEnabled()) {
  25. Log_OC.d(TAG, "start observer: " + syncedFolder.getLocalPath());
  26. SyncedFolderObserver observer = new SyncedFolderObserver(syncedFolder);
  27. observer.startWatching();
  28. syncedFolderMap.put(syncedFolder.getLocalPath(), observer);
  29. }
  30. }
  31. return Service.START_NOT_STICKY;
  32. }
  33. @Override
  34. public void onDestroy() {
  35. for (SyncedFolderObserver observer : syncedFolderMap.values()) {
  36. observer.stopWatching();
  37. syncedFolderMap.remove(observer);
  38. }
  39. }
  40. /**
  41. * Restart oberver if it is enabled
  42. * If syncedFolder exists already, use it, otherwise create new observer
  43. * @param syncedFolder
  44. */
  45. public void restartObserver(SyncedFolder syncedFolder){
  46. if (syncedFolderMap.containsKey(syncedFolder.getLocalPath())) {
  47. Log_OC.d(TAG, "stop observer: " + syncedFolder.getLocalPath());
  48. syncedFolderMap.get(syncedFolder.getLocalPath()).stopWatching();
  49. syncedFolderMap.remove(syncedFolder.getLocalPath());
  50. }
  51. if (syncedFolder.isEnabled()) {
  52. Log_OC.d(TAG, "start observer: " + syncedFolder.getLocalPath());
  53. if (syncedFolderMap.containsKey(syncedFolder.getLocalPath())) {
  54. syncedFolderMap.get(syncedFolder.getLocalPath()).startWatching();
  55. } else {
  56. SyncedFolderObserver observer = new SyncedFolderObserver(syncedFolder);
  57. observer.startWatching();
  58. syncedFolderMap.put(syncedFolder.getLocalPath(), observer);
  59. }
  60. }
  61. }
  62. @Override
  63. public IBinder onBind(Intent arg0) {
  64. return mBinder;
  65. }
  66. public class SyncedFolderObserverBinder extends Binder {
  67. public SyncedFolderObserverService getService() {
  68. return SyncedFolderObserverService.this;
  69. }
  70. }
  71. }